数据容器 为什么学习数据容器 思考一个问题:如果我想要在程序中,记录5名学生的信息,如姓名。 如何做呢?...学习数据容器,就是为了批量存储或批量使用多份数据 Python中的数据容器: 一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素 每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。...,支持嵌套 列表的下标(索引) 如何从列表中取出特定位置的数据呢?...将容器内的元素依次取出进行处理的行为,称之为:遍历、迭代。 如何遍历列表的元素呢? 可以使用前面学过的while循环 如何在循环中取出列表的元素呢?...使用列表[下标]的方式取出 循环条件如何控制? 定义一个变量表示下标,从0开始 循环条件为 下标值 < 列表的元素数量 除了while循环外,Python中还有另外一种循环形式:for循环。
正则表达式(简写为 regex 或者 regexp)基本上是定义一种搜索模式的字符串,可以被用来执行“搜索”或者“搜索并替换”操作,也可以被用来验证像密码策略等条件。...在这篇教程中,我们将会学习一些正则表达式的基本概念,并且学习如何在 Bash 中通过 使用它们,但是如果你希望在其他语言如 python 或者 C 中使用它们,你只能使用正则表达式部分。...(点) 它用于匹配出现在我们搜索项中的任意字符。举个例子,我们可以使用点如: 这个正则表达式意味着我们在名为 ‘file1’ 的文件中查找的词以 开始,以 结尾,中间可以有 1 个字符的字符串。...我们在方括号中也可以定义像 或者 作为匹配字符的列表。 这就像正则表达式的 not 操作。当使用 时,它意味着我们的搜索将包括除了方括号内提到的所有字符。...以下模式要求字符串中的字母 至少被匹配到一次: 这里 在我们的搜索中至少需要发生一次,所以我们的结果可以为 或者 ,但不能是 。
花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。...awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。 通常,awk是以文件的一行为处理单位的。...然而,在许多编程情况中,可能需要在 awk 开始处理输入文件中的文本之前执行初始化代码。对于这种情况, awk 允许您定义一个 BEGIN 块。...awk 还有"do...while"循环,它在代码块结尾处对条件求值,而不像标准 while 循环那样在开始处求值。 它类似于其它语言中的"repeat...until"循环。...如果迭代等于 4,则增加 x并调用 continue 语句,该语句立即使 awk 开始执行下一个循环迭代,而不执行代码块的其余部分。
在 Bash 脚本中,有 3 种类型的循环:for 循环、while 循环和 until 循环。这三个用于迭代值列表并执行一组给定的命令。...此外,我们可以在范围的末尾包含一个值,该值将导致 for 循环以增量步骤迭代这些值。 以下 bash 脚本打印 1 到 7 之间的值,从第一个值开始在这些值之间增加 2 个步长。 #!...除了 bash 脚本之外,它还用于 Python 和 Java 等编程语言。 continue 语句在满足特定条件时停止循环内的当前迭代,然后恢复迭代。 考虑如下所示的 for 循环。 #!...第 2 行:标记 for 循环的开始,并将变量 n 从 1 迭代到 10。...在 PyTorch 中实现可解释的神经网络模型 如何在 Linux 中列出 Systemd 下所有正在运行的服务 GPT 模型的工作原理 你知道吗?
1、常用断言: \b匹配单词的边界,放在字符类[]中则表示backspace \B匹配非单词边界,受ASCII标记影响 \A 在起始处匹配 ^ 在起始处匹配,如果有MULTILINE...如: re.compile(r""" <img\s +) #标签的开始 [^>]*?...(三)正则表达式对象的常用方法 rx.findall(s,start, end): 返回一个列表,如果正则表达式中没有分组,则列表中包含的是所有匹配的内容, 如果正则表达式中有分组,则列表中的每个元素是一个元组...,元组中包含子分组中匹配到的内容,但是没有返回整个正则表达式匹配的内容 rx.finditer(s, start, end): 返回一个可迭代对象 对可迭代对象进行迭代,每一次返回一个匹配对象...rx.split(s, m): 分割字符串,返回一个列表,用正则表达式匹配到的内容对字符串进行分割 如果正则表达式中存在分组,则把分组匹配到的内容放在列表中每两个分割的中间作为列表的一部分,如:
匹配点字符 " ( ) " 提取括号内匹配的数据 " ^ " 匹配字符串开始 " $ " 匹配字符串结束 " * " 匹配前面的子表达式零次或多次...) 扫描整个字符串并返回第一个成功的匹配 re.findall( ) 在字符串中找到正则表达式所匹配的所有子串, 并返回一个列表, 如果没有找到匹配的, 则返回空列表 re.split( ) 将一个字符串按照正则表达式匹配结果进行分割..., 返回列表类型 re.finditer( ) 在字符串中找到正则表达式所匹配的所有子串, 并把它们作为一个迭代器返回 re.sub( ) 把字符串中所有匹配正则表达式的地方替换成新的字符串 re.complie...**kwargs:其他关键字参数,如 class_(注意有一个下划线)用于查找具有特定类的标签。...选取属性 " * " 匹配任意节点 " /text () " 获取Element对象的元素内容( 文本 ) " /@ " 获取标签中的属性名的内容 " [ ] " 筛选符合条件的节点 1.
,字符,字符串所组成的列表,for 循环来遍历这个列表。...默认情况下,bash shell会将下列字符当作字段分隔符: 空格 制表符 换行符 如果bash shell在数据中看到以上这些字符中的任意一个,它就会假定这表明了列表中一个新数据字段的开始。...它会强制shell 使用文件扩展匹配。文件扩展匹配是生成匹配指定通配符的文件名或路径名的过程。在不知道所有的文件名,这个特性在处理目录中的文件时就非常有用。...注意,有些部分并没有遵循 bash shell 标准的 for 命令: 变量赋值可以有空格 条件中的变量不以美元符开头 迭代过程的算式未用 expr 命令格式 使用 C 风格的 for 命令可以像...控制循环 有时我们在脚本中执行循环的过程中,我们需要根据特定的条件来及时的退出循环去执行其他的任务,所以我们要能够对循环进行条件上的控制,shell 中 break 命令,continue 命令能帮我们控制循环内部的情况
条件操作符如'-f'不能加以引用, 以免被当作普通字符串. 当使用操作符'=='和'!...='时, 操作符右边的字符串被当作一个模式, 并依据3.5.8.1 节介绍的'模式匹配'规则来进行匹配....'=~'右边 的字符串被作为增广正则表达式进行匹配(参见 regex3). 如果字符串匹配则 返回0, 否则返回1. 如果正则表达式语法错误, 则该条件表达式返回2....正则表达式内的括号子表达式所匹配的字符串被保存在数组变量 'BASH_REMATCH'中. 'BASH_REMATCH'中序号为0的元素是跟整个正则表达式匹配 的字符串....'BASH_REMATCH'中序号为N的元素是与第N个括号子表达式匹配的字符 串部分. 基本表达式可以用以下的操作符加以组合.
如: re.compile(r""" <imgs +)#标签的开始 [^>]*?...2.3 正则表达式对象的常用方法 1. rx.findall(s,start, end): 返回一个列表,如果正则表达式中没有分组,则列表中包含的是所有匹配的内容, 如果正则表达式中有分组...,则列表中的每个元素是一个元组,元组中包含子分组中匹配到的内容,但是没有返回整个正则表达式匹配的内容 2. rx.finditer(s, start, end): 返回一个可迭代对象... 如果正则表达式在字符串的起始处匹配,就返回一个匹配对象,否则返回None 5. rx.sub(x, s, m): 返回一个字符串。...7. rx.split(s, m):分割字符串 返回一个列表 用正则表达式匹配到的内容对字符串进行分割 如果正则表达式中存在分组,则把分组匹配到的内容放在列表中每两个分割的中间作为列表的一部分
如: re.compile(r""" <imgs +)#标签的开始 [^>]*?#不是src的属性 src=#src属性的开始 (?: (?P["'])#左引号 (?...2.3 正则表达式对象的常用方法 1. rx.findall(s,start, end): 返回一个列表,如果正则表达式中没有分组,则列表中包含的是所有匹配的内容, 如果正则表达式中有分组,则列表中的每个元素是一个元组...,元组中包含子分组中匹配到的内容,但是没有返回整个正则表达式匹配的内容 2. rx.finditer(s, start, end): 返回一个可迭代对象 对可迭代对象进行迭代,每一次返回一个匹配对象,可以调用匹配对象的...7. rx.split(s, m):分割字符串 返回一个列表 用正则表达式匹配到的内容对字符串进行分割 如果正则表达式中存在分组,则把分组匹配到的内容放在列表中每两个分割的中间作为列表的一部分,如: rx...06. m.start(g): 当前匹配对象的子分组是从字符串的那个位置开始匹配的,如果当前组没有参与匹配就返回-1 07. m.end(g) 当前匹配对象的子分组是从字符串的那个位置匹配结束的,如果当前组没有参与匹配就返回
花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。...awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。 通常,awk是以文件的一行为处理单位的。...然而,在许多编程情况中,可能需要在 awk 开始处理输入文件中的文本之前执行初始化代码。对于这种情况, awk 允许您定义一个 BEGIN 块。...awk 还有"do...while"循环,它在代码块结尾处对条件求值,而不像标准 while 循环那样在开始处求值。 它类似于其它语言中的"repeat...until"循环。...如果迭代等于 4,则增加 x并调用 continue 语句,该语句立即使 awk 开始执行下一个循环迭代,而不执行代码块的其余部分。如同 break 一样, 将使循环控制变量自动增加。
=world)",用来匹配"hello wangxing"和"hello world"只能匹配到后者的hello 1.5 条件匹配 (?...2.3 正则表达式对象的常用方法 1. rx.findall(s,start, end): 返回一个列表,如果正则表达式中没有分组,则列表中包含的是所有匹配的内容, 如果正则表达式中有分组,则列表中的每个元素是一个元组...,元组中包含子分组中匹配到的内容,但是没有返回整个正则表达式匹配的内容 2. rx.finditer(s, start, end): 返回一个可迭代对象 对可迭代对象进行迭代,每一次返回一个匹配对象,可以调用匹配对象的...7. rx.split(s, m):分割字符串 返回一个列表 用正则表达式匹配到的内容对字符串进行分割 如果正则表达式中存在分组,则把分组匹配到的内容放在列表中每两个分割的中间作为列表的一部分,如: 8...06. m.start(g): 当前匹配对象的子分组是从字符串的那个位置开始匹配的,如果当前组没有参与匹配就返回-1 07. m.end(g) 当前匹配对象的子分组是从字符串的那个位置匹配结束的,如果当前组没有参与匹配就返回
: del d['a'] 4.遍历: >[生成一个生成器,可以进行迭代操作][字典是无序的,所以返回的迭代对象也是无序的] d.items() 生成器中是一个元组的列表 d.values() d.keys...: 列表解析是Python重要的语法糖 列表解析的速度比for in 迭代 快 基本语法: ret = [expression for item in iterator] ret = [...例子2: 带条件的列表解析: lst = list(range(10)) [x + 1 for x in lst if x % 2 == 0] //输出奇数 [...: python2 和python3最大的差别就是在于字符串 python2中字符串是byte的有序序列 python3中字符串是unicode的有序序列 字符串是不可变的 字符串支持下标和切片 1.字符串的切片操作...f.find('fs') //从左开始查找第一次匹配到的位置; 找不到会返回 -1 f.find('fs', 2, 4) //设置 [开始
file.txt 从右边开始,删除最短匹配di,注意:这里的*在后面。...test是Shell程序中的一个表达式,通过和Shell 提供的if等条件语句相结合可以方便地测试字符串、 文件状态和数字。...4.6.1 for for语法1: for 变量名 in 参数列表 do 命令列表 done 将"参数列表"中的元素依次赋给"变量名“,在每次赋值后执行"命令列表”,"参数列表"表示"变量名"的取值范围...] do 命令列表 done 循环执行“命令列表”中的命令,直至“条件表达式”的值为假。...4.6.3 until 语法: until [条件表达式] do 命令列表 done 循环执行“命令列表”中的命令,直至“条件表达式”的值为真。
if/test结构中的左中括号是调用test的命令标识/右中括号是关闭条件判断的,注意结构中并不是必须有中括号,但是新版的Bash中要求必须这样。...]],结果为真 [[ ]] 中匹配字符串或通配符,不需要引号 使用[[ … ]]条件判断结构,而不是[ … ],能够防止脚本中的许多逻辑错误。...四种模式字符串提取和替换: #第一种:对大括号中的以逗号分割的文件列表进行拓展。如 touch {a,b}.txt 结果为a.txt b.txt。...个字符到末尾的所有字符 # 若num为正数,从左边0处开始 # 若num为负数,从右边开始提取字串,但必须使用在冒号后面加空格或一个数字或整个num加上括号,如${var: -2}、${var: 1-.../bin/bash #迭代一个字符串或者CSV(comma separated value,都好分隔型数值)中的单词: data="111,222,333|444,555,666" oldIFS=$IFS
Bash 条件表达式 在计算机科学中,条件语句、条件表达式和条件结构是程序设计语言的特征,它们根据程序设计人员指定的布尔条件的值为真或假来执行不同的计算或操作。...在bash中,[[ 复合命令和 [ 内置命令使用条件表达式来测试文件属性并执行字符串和算术比较。...下面是最流行的bash条件表达式列表,您不必费力地记住它们,您可以简单地将此页面标记为书签,并在需要时返回到此列表!...当与 [[ 命令一起使用时,它将执行上面描述的模式匹配(复合命令): [[ ${string1} == ${string2} ]] 如果字符串不相等,为真: [[ ${string1} !...与其他语言一样,我们也可以在bash脚本中使用continue和break: continue告诉bash脚本停止循环的当前迭代并开始下一个迭代 break告诉bash脚本立即结束循环 12.
行下边的一行开始),忽略注释. 如: #!/bin/sh #!/bin/bash #!/usr/bin/perl #!/usr/bin/tcl #!/bin/sed -f #!.../usr/awk -f 2,条件表达式 条件表达式用于 [[ 复合命令以及内建命令 test 和 [ 中,用来测试文件属性,进行字符串和算术比较。...表示上一级目录. .字符匹配,这是作为正则表达是的一部分,用来匹配任何的单个字符. " 部分引用" " 可引用除$、` 、\ 、外的任意字符或字符串," "中的变量能够正常显示变量值....保存一个命令/一个函数或者脚本本身的退出状态. $$ 进程 ID 变量.这个$$变量保存运行脚本进程 ID () 命令组.如: (a=hello;echo $a) 注意:在()中的命令列表,...+ 选项,对于特定的命令来说使用"+"来打开特定的选项,用"-"来关闭特定的选项. % 算术取模运算.也用在正则表达式中.
[[ ]] 中匹配字符串或通配符,不需要引号。 ③使用[[ … ]]条件判断结构,而不是[ … ],能够防止脚本中的许多逻辑错误。...第二种:对大括号中以点点(..)分割的顺序文件列表起拓展作用,如:touch {a..d}.txt 结果为a.txt b.txt c.txt d.txt # ls {ex1,ex2}.sh...这种模式时,shell在variable中查找,看它是否一给的模式pattern开始,如果是,就从命令行把variable中的内容去掉左边最短的匹配模式 第四种模式: {variable...若num为正数,从左边0处开始;若num为负数,从右边开始提取字串,但必须使用在冒号后面加空格或一个数字或整个num加上括号,如{var: -2}、{var:1-3}或{var:(-2)}。...表示从var字符串的第num1个位置开始提取长度为num2的子串。不能为负数。
领取专属 10元无门槛券
手把手带您无忧上云