自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

编程菜鸟iglesias的博客

一个编程菜鸟的学习里程

  • 博客(30)
  • 收藏
  • 关注

转载 第一章:文本-re:正则表达式-利用模式拆分

1.3.11 利用模式拆分str.split()是分解字符串来完成解析的最常用的方法之一。不过,它只支持使用字面量只作为分隔符。有时,如果输入没有一致的格式,那么就需要有一个正则表达式。例如,很多纯文本标记语言都把段落分隔符定义为两个或多个换行符(\n)。在这种情况下,就不能使用str.split(),因为这个定义中提到了“或多个”。通过findall()标识段落的一种策略是使用类似(.+?)\...

2019-01-31 20:22:47 491

转载 第一章:文本-re:正则表达式-用模式修改字符串

1.3.10 用模式修改字符串除了搜索文本之外,re还支持使用正则表达式作为搜索机制来修改文本,而且替换(replacement)可以引用模式中的匹配组作为替代文本的一部分。使用sub()可以将 一个模式的所有出现替换为另一个字符串。import rebold = re.compile(r'\*{2}(.*?)\*{2}')text = 'Make this **bold**. Thi...

2019-01-31 20:15:33 289

转载 第一章:文本-re:正则表达式-自引用表达式

1.3.9 自引用表达式还可以在表达式后面的部分中使用匹配的值。例如,前面的email例子可以更新为只匹配由人名和姓氏组成的地址,为此要包含这些组的反向引用。要达到这个目的,最容易的办法就是使用\num按ID编号引用先前匹配的组。import readdress = re.compile( r''' # The regular name (\w+) # F...

2019-01-30 20:57:45 345

转载 第一章:文本-re:正则表达式-前向或后向

1.3.8 前向或后向很多情况下,只有当模式中其他部分也匹配时才会匹配模式的某个部分。例如,在email解析表达式中,尖括号被标志为可选。在实际中,尖括号应当是成对的,所以只有当两个尖括号都出现或者都不出现时表达式才能匹配。这个修改版本的表达式使用一个肯定前向(positive look-ahead)断言来匹配尖括号。前向断言语法为(?=pattern)。import readdress ...

2019-01-29 19:13:31 625

转载 第一章:文本-re:正则表达式-搜索选项(5)

1.3.7.5 在模式中嵌入标志有些情况下,编译表达式时不能增加标志,如将一个模式作为参数传入一个库函数,这个库函数将在以后编译这个模式,在这种情况下,标志可以嵌入到表达式字符串本身。例如,要打开大小写无关匹配,可以在表达式开头增加(?i)。import retext = 'This is some text -- with punctuation.'pattern = r'(?i)\b...

2019-01-28 20:11:42 127

转载 第一章:文本-re:正则表达式-搜索选项(4)

1.3.7.4 详细表达式语法随着表达式变得越来越复杂,紧凑格式的正则表达式可能会变成障碍。随着表达式中组数的增加,需要做更多的工作来明确为什么需要各个元素,以及表达式的各部分究竟如何交互。使用命名组可以帮助缓解这些问题,不过更好的解决方案是使用详细模式(verbose mode)表达式,它允许在模式中嵌入注释和额外的空白符。可以用一个验证email地址的模式来展示详细模式会让正则表达式的处理更...

2019-01-28 20:04:29 308

转载 第一章:文本-re:正则表达式-搜索选项(3)

1.3.7.3 Unicode在python3中,str对象使用完整的Unicode字符集,str的正则表达式处理会假设模式和输入文本都是Unicode.之前描述的转义码默认的也是按Unicode定义。这些假设意味着模式\w+对单词"French"和"Français"都能匹配。要向python2中的默认假设那样将转义码限制到ASCII字符集,编译模式或者调用模块级函数search()和matc...

2019-01-28 19:58:30 120

转载 第一章:文本-re:正则表达式-搜索选项(2)

1.3.7.2 多行输入有两个标志会影响如何完成多行输入中的搜索:MULTILINE和DOTALL。MULTILINE标志控制模式匹配代码如何对包含换行符的文本处理锚定指令。打开多行模式时,对^和$的锚定规则除了应用于整个字符串之外,还会在各行的开头和末尾应用。import retext = 'This is some text -- with punctuation .\nA secon...

2019-01-28 19:54:42 144

转载 第一章:文本-re:正则表达式-搜索选项(1)

1.3.7 搜索选项选项标志用来改变匹配引擎处理表达式的方式。可以使用位或(OR)操作结合这些标志,然后传递到compile(),search(),match()和其他接受搜索模式的函数。1.3.7.1 大小写无关的匹配IGNORECASE会使模式中的字面量字符以及字符区间与大小写字符都匹配。import retext = 'This is some text -- with punc...

2019-01-28 19:50:31 194 2

转载 第一章:文本-re:正则表达式-用组解析匹配

1.3.6 用组解析匹配搜索模式匹配是正则表达式强大能力的基础。为模式提供组可以隔离匹配文本的各个部分,以扩展这些功能来创建一个解析器。可以用小括号包围模式来定义组。# re_test_patterns.pyimport redef test_patterns(text,patterns): """Given source text and a list of patterns,...

2019-01-27 09:47:14 409

转载 第一章:文本-re:正则表达式-限制搜索

1.3.5 限制搜索有些情况下,可以提前知道只需要搜索整个输入的一个子集,在这些情况下,可以告诉re限制搜索范围从而进一步约束正则表达式匹配。例如,如果模式必须出现在输入开头,那么使用match()而不是search()会锚定搜索,而不必显示地在搜索模式中包含一个锚。import retext = 'This is some text -- with punctuation.'patte...

2019-01-27 09:19:27 337

转载 第一章:文本-re:正则表达式-模式语法(4)

1.3.4.4 锚定除了描述要匹配的模式的内容之外,还可以使用锚定指定指定模式在输入文本中的相对位置。表1-2列出了合法的锚定码。表1-2 正则表达式锚定码锚定码含 义^字符串或行的开头$字符串或行末尾\A字符串开头\Z字符串末尾\b单词开头或末尾的空串\B不在单词开头或末尾的空串# re_test_patterns.py...

2019-01-27 08:58:01 186

转载 第一章:文本-re:正则表达式-模式语法(3)

1.3.4.3 转义码一种更简洁的表示是对一些预定义的字符集使用转义码。Re可识别的转义码如表1-1所示。表1-1 正则表达式转义码转义码含义\d数字\D非数字\s空白符(制表符、空格、换行等)\S非空白符\w字母数字\W非字母数字说明:可以在字符前加一个反斜线(\)来指示转义。遗憾的是,反斜线本身在正常的Python字符...

2019-01-27 08:47:10 195

转载 第一章:文本-re:正则表达式-模式语法(2)

1.3.4.2 字符集字符集(character set)是一组字符,包含可以与模式中当前位置匹配的所有字符。例如,[ab]可以匹配a或b.# re_test_patterns.pyimport redef test_patterns(text,patterns): """Given source text and a list of patterns,look for ...

2019-01-27 08:31:20 389

转载 第一章:文本-re:正则表达式-模式语法(1)

13.4 模式语法除了简单的字面量文本字符串,正则表达式还支持更强大的模式。模式可以重复,可以锚定到输入中不同的逻辑位置,可以紧凑的形式表述而不需要在模式中提供每一个字面量字符。可以结合字面量文本值和元字符来使用所有这些特性,元字符是re实现的正则表达式模式语法的一部分。# re_test_patterns.pyimport redef test_patterns(text,patter...

2019-01-27 08:18:35 197

转载 第一章:文本-re:正则表达式-多重匹配

1.3.3 多重匹配到目前为止,示例模式都只是使用search()来查找字面量文本字符串的单个实例。findall()函数会返回输入中与模式匹配而且不重叠的所有子串。import retext = 'abbaaabbbbaaaaa'pattern = 'ab'for match in re.findall(pattern,text): print('Found {!r}'....

2019-01-27 08:05:15 1008

转载 第一章:文本-re:正则表达式-编译表达式

1.3.2 编译表达式尽管re包括模块级函数,可以处理作为文本字符串的正则表达式,但是对于程序频繁使用的表达式而言,编译它们会更为高效。compile()函数会把一个表达式字符串转换为一个Regexobject.import re# Precompile the patterns.regexes = [ re.compile(p) for p in ['this','th...

2019-01-27 07:59:12 245

转载 第一章:文本-re:正则表达式-查找文本中的模式

1.3 re:正则表达式正则表达式(regular expression)是用一种形式化语法描述的文本匹配模式。模式会被解释为一组指令,然后执行这些指令并提供一个字符串作为输入,将生成一个匹配子集或者生成原字符串的一个修改版本。“正则表达式”在讨论中经常简写为“regex”或“regexp”。表达式可以包含字面量文本匹配、重复、模式组合、分支和其他复杂的规则。与创建一个特定用途的词法分析器和解析...

2019-01-27 07:53:20 481

转载 第一章:文本-textwrap:格式化文本段落-截断长文本

1.2.7 截断长文本可以使用shorten()截断长文本来创建一个小结或预览。所有现有的空白符(如制表符、换行符以及多个空格组成的序列)都会被规范化为一个空格。然后文本将被截断为小于或等于指定的长度,而且会在单词边界之间截断,避免包含不完整的单词。import textwrapfrom textwrap_example import sample_textdedented_text =...

2019-01-26 10:23:16 288

转载 第一章:文本-textwrap:格式化文本段落-悬挂缩进

1.2.6 悬挂缩进不仅可以设置输出的宽度,还可以采用通用的方式单独控制首行的缩进,使首行的缩进不同于后续的各行。import textwrapfrom textwrap_example import sample_textdedented_text = textwrap.dedent(sample_text).strip()print(textwrap.fill(dedented_t...

2019-01-26 10:20:29 502

转载 第一章:文本-textwrap:格式化文本段落-缩进块

1.2.5 缩进块可以使用indent()函数为一个字符串找那个的所有行增加一致的前缀文本。这个例子会格式化通用的示例文本,就好像它是回复邮件中所引用的原email的一部分,这里使用>作为每一行的前缀。import textwrapfrom textwrap_example import sample_textdedented_text = textwrap.dedent(samp...

2019-01-26 10:07:02 413

转载 第一章:文本-textwrap:格式化文本段落-结合dedent和fill

1.2.4 结合dedent和fill接下来,可以把去除缩进的文本传入fill(),并指定一些不同的width值。import textwrapfrom textwrap_example import sample_textdedented_text = textwrap.dedent(sample_text).strip()for width in [45,60]: prin...

2019-01-26 09:59:37 275

转载 第一章:文本-textwrap:格式化文本段落-去除现有的缩进

1.2.3 去除现有的缩进关于前面的例子,其输出中混合嵌入了制表符和额外的空格,所以格式不太美观。用dedent()可以去除示例文本中所有行前面的空白符,这会生成更好的结果,并且允许在python代码中直接使用docstring或内嵌的多行字符串,同时去除代码本身的格式。示例字符串专门加入了一级缩进来展示这个特性。import textwrapfrom textwrap_example im...

2019-01-26 09:53:26 660

转载 第一章:文本-textwrap:格式化文本段落-填充段落

1.2.2 填充段落fill()函数取文本作为输入,生成格式化文本作为输出。import textwrapfrom textwrap_example import sample_textprint(textwrap.fill(sample_text,width=50))结果不是太让人满意。文本现在已经左对齐,不过只有第一行保留了缩进,后面各行前面的空格则嵌在段落中。运行结果:...

2019-01-26 09:46:34 252

转载 第一章:文本-textwrap:格式化文本段落-示例数据

1.2.1 示例数据需要美观打印(pretty-pprinting)的情况下,可以使用textwrap模块格式化要输出的文本。它提供了很多文本编辑器和字处理器中都有的段落自动换行或填充特性。本节中的例子会使用模块textwrap_example.py,其中包含一个字符串sample_text。# textwrap_example.pysample_text = ''' The t...

2019-01-26 09:41:15 248

转载 第一章:文本-文本常量和模板-常量

1.1.5 常量string模块包括大量与ASCII和数值字符集相关的常量。import inspectimport stringdef is_str(value): return isinstance(value,str)for name,value in inspect.getmembers(string,is_str): if name.startswith('...

2019-01-26 09:27:32 370

转载 第一章:文本-文本常量和模板-Formatter

1.1.4 FormatterFormatter类实现了与str的format()方法同样的布局规范语言。它的特性包括类型强制转换、对齐、属性和域引用、命名和位置模板参数以及类型特定的格式化选项。大部分情况下format()方法都能更便利地访问这些特性,不过也可以利用Formatter构建子类,以备需要改动的情况。...

2019-01-26 09:23:03 214

转载 第一章:文本-文本常量和模板-高级模板

1.1.3 高级模板可以调整string.Tempplate在模板体中查找变量名所使用的正则表达模式,以改变它的默认语法。为此,一种简单的方法是修改delimiter和idpattern类属性。import stringclass MyTemplate(string.Template): delimiter = '%' idpattern = '[a-z]+_[a-z]+'...

2019-01-26 09:13:34 234

转载 第一章:文本-文本常量和模板-模板

1.1.2 模板字符串模板是PEP292新增的部分,将作为内置拼接语法的替代做法。使用string.Template拼接时,要在名字前加前缀$来标识变量。或者,如果有必要区分变量和周围的文本,可以使用大括号包围变量。下面这个例子对一个简单模板、使用%操作符的类似字符串拼接以及使用str.format()的新格式化字符串语法做了比较:import stringvalues = {'var'...

2019-01-25 22:17:30 270

转载 第一章:文本-文本常量和模板-函数

1.1 string:文本常量和模板1.1.1 函数函数capwords()会把一个字符串中的所有单词首字母大写。import strings = "The quick brown fox jumped over the lazy dog."print(s)print(string.capwords(s))这个代码的结果等同于先调用split(),把结果列表中的单词首字母大写,然后...

2019-01-25 21:33:42 501

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除