python3: 字符串和文本

Posted 数据科学工作加油站

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3: 字符串和文本相关的知识,希望对你有一定的参考价值。

6. 字符串忽略大小写的搜索替换

>>> text = UPPER PYTHON, lower python, Mixed Python
>>> re.findall(python, text, flags=re.IGNORECASE)
[PYTHON, python, Python]
>>> re.sub(python, snake, text, flags=re.IGNORECASE)
UPPER snake, lower snake, Mixed snake
>>>

7.最短匹配

Q: 你正在试着用正则表达式匹配某个文本模式,但是它找到的是模式的最长可能匹配。 而你想修改它变成查找最短的可能匹配。

S:这个问题一般出现在需要匹配一对分隔符之间的文本的时候(比如引号包含的字符串)。 为了说明清楚,考虑如下的例子:模式 r‘"(.*)"‘ 的意图是匹配被双引号包含的文本。(.)匹配除了换行外的任何字符

>>> str_pat = re.compile(r"(.*)")
>>> text1 = Computer says "no."
>>> str_pat.findall(text1)
[no.]
>>> text2 = Computer says "no." Phone says "yes."
>>> str_pat.findall(text2)
[no." Phone says "yes.]

第二个例子中搜索 text2 的时候返回结果并不是我们想要的。

为了修正这个问题,可以在模式中的*操作符后面加上?修饰符,就像这样:

>>> str_pat = re.compile(r"(.*?)")
>>> str_pat.findall(text2)
[no., yes.]
>>>

通过在 * 或者 + 这样的操作符后面添加一个 ? 可以强制匹配算法改成寻找最短的可能匹配。

  8. 多行匹配模式

Q: 你正在试着使用正则表达式去匹配一大块的文本,而你需要跨越多行去匹配。

S:这个问题很典型的出现在当你用点(.)去匹配任意字符的时候,忘记了点(.)不能匹配换行符的事实。 比如,假设你想试着去匹配C语言分割的注释:

 

 

 

 

以上是关于python3: 字符串和文本的主要内容,如果未能解决你的问题,请参考以下文章

scrapy主动退出爬虫的代码片段(python3)

scrapy按顺序启动多个爬虫代码片段(python3)

[Python3] 043 多线程 简介

python3: 字符串和文本

错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”

笨办法学 Python(第三版)习题 6: 字符串(string)和文本