Python高级正则表达式,讲的太透彻了

文章讲述了在Python中使用split函数进行字符串分割,以及如何通过正则表达式进行更复杂的模式匹配和替换。还介绍了如何处理文件数据,如regrouped.txt,并展示了如何在实际场景中清理和重组数据。
摘要由CSDN通过智能技术生成

‘神学院,’,

‘和’,

‘在’,

‘大学。’,

‘让’,

‘它’,

‘是’,

‘书面’,

‘在’,

‘引物’,

‘拼写’,

‘图书,’,

‘和’,

‘在’,

‘年鉴。’,

‘让’,

‘它’,

‘是’,

‘传教’,

‘从’,

‘这’,

‘讲坛’,

‘宣布’,

‘在’,

‘立法’,

‘大厅,’,

‘和’,

‘强制’,

‘在’,

‘这’,

“法院”,

‘的’,

‘正义。’,

‘和,’,

‘在’,

‘短的,’,

‘让’,

‘它’,

‘变得’,

‘这’,

‘政治的’,

‘宗教’,

‘的’,

‘这’,

‘国家。’]

现在我们来看一个字符串,它可能来自 Excel 或 OpenOffice calc 文件。我们在前面的例子中已经看到 split 将空格作为默认分隔符。我们想在下面的小例子中使用分号作为分隔符来分割字符串。我们唯一要做的就是使用“;” 作为 split() 的参数:

line = “James;Miller;teacher;Perl”

line 。拆分(“;” )

输出:

[‘詹姆斯’,‘米勒’,‘老师’,‘Perl’]

split() 方法有另一个可选参数:maxsplit。如果给出了 maxsplit,则最多完成 maxsplit 次分割。这意味着结果列表最多将包含“maxsplit + 1”个元素。我们将在下一个示例中说明 maxsplit 的操作方式:

mammon = “世界主要宗教之神。主庙在圣城纽约。”

金门。拆分( " " , 3 )

输出:

[‘这’,

‘上帝’,

‘的’,

“世界领先的宗教。主要寺庙在圣城纽约。”]

我们在前面的例子中使用了一个空白作为分隔符字符串,这可能是一个问题:如果连接多个空格或空格,split() 会在每个空格后拆分字符串,这样我们就会得到空字符串和只有我们的结果列表中 (‘\t’) 内的一个选项卡:

财神 = “神 \ t世界领先的宗教,行政寺庙是在纽约的圣城。”

金门。拆分( " " , 5 )

输出:

[‘这’,

‘上帝’,

‘’,

‘\t’,

‘的’,

“世界领先的宗教。主要寺庙在圣城纽约。”]

我们可以通过使用 None 作为第一个参数来防止空字符串的分离。现在 split 将使用默认行为,即每个由连接的空白字符组成的子字符串将被视为一个分隔符:

金门。拆分(无,5 )

输出:

[‘这’,

‘上帝’,

‘的’,

‘这’,

“世界的”,

‘主导宗教。主庙位于圣城纽约。’]

正则表达式拆分

在许多情况下,字符串方法 split() 是正确的工具,但是,如果您想获取文本的裸词,即没有任何特殊字符和空格,该怎么办。如果我们想要这个,我们必须使用 re 模块中的 split 函数。我们用 Ovid 的 Metamorphoses 开头的一段简短文字来说明这种方法:

import re

metamorphoses = “OF 的身体变成了各种形式,我唱道:Ye Gods,这些奇迹从他们身上涌现,用天体的热度激励我的人数;”

再。分裂( “\W+” ,变形)

输出:

[‘的’,

‘身体’,

‘张’,

‘d’,

‘到’,

‘各种各样的’,

‘形式’,

‘一世’,

‘唱歌’,

‘耶’,

‘神’,

‘从’,

‘谁’,

‘这些’,

“奇迹”,

‘做过’,

‘春天’,

‘启发’,

‘我的’,

‘数字’,

‘和’,

‘天体’,

‘热’,

‘’]

下面的例子是一个很好的例子,正则表达式确实优于字符串拆分。假设我们有包含姓氏、名字和姓名职业的数据行。我们要清除多余和多余的文本描述的数据行,即“姓氏:”、“姓名:”等,以便我们只有第一列中的姓氏,第二列中的名字和第三栏职业:

import re

lines = [ “姓氏:奥巴马,前称:巴拉克,职业:总统” , “姓氏:默克尔,前称:安吉拉,职业:总理” ]

for line in lines :

print ( re . split ( ",* *\w *: " , 行))

输出:

[‘’, ‘奥巴马’, ‘巴拉克’, ‘总统’]

[‘’, ‘默克尔’, ‘安吉拉’, ‘总理’]

我们可以使用切片运算符轻松改进脚本,这样我们就不会将空字符串作为结果列表的第一个元素:

import re

lines = [ “姓氏:奥巴马,前称:巴拉克,职业:总统” , “姓氏:默克尔,前称:安吉拉,职业:总理” ]

for line in lines :

print ( re . split ( ",* *\w *: " , 行)[ 1 :])

输出:

[‘奥巴马’、‘巴拉克’、‘总统’]

[‘默克尔’、‘安吉拉’、‘总理’]

现在来看看完全不同的东西:巴拉克奥巴马和 Python 或更好的蒙蒂 Python 之间存在联系。巨蟒的成员之一约翰·克里斯在 2008 年 4 月告诉西方日报:“我将作为一名演讲撰稿人为他提供服务,因为我认为他是一个聪明人。”

搜索并替换为子


re.sub(正则表达式,替换,主题)

字符串主题中正则表达式 regex 的每个匹配项都将被替换为字符串替换。例子:

” import re

str = “是的我说是的我会是的。”

资源 = 重新。sub ( “[yY]es” , “no” , str )

打印( res )

输出:

不,我说不,我不会。

练习

练习 1

给出了一个名为“order_journal.txt”的文件,格式如下:

%% WriteFile的order_journal.txt

顾客-编号 1289

T83456

顾客-编号 1289

的客户-编号 1205

T10032

B77301

顾客-编号 1205

的客户-编号 1410

K34001

T98987

顾客-编号 1410

的客户-编号 1205

T10786

C77502

顾客-编号 1205

的客户-编号 1289

Z22334

客户-编号 1289

输出:

覆盖 order_journal.txt

编写一个新文件’order_journal_regrouped.txt’,其中的数据按照如下方式重新分组:

最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~

给大家准备的学习资料包括但不限于:

Python 环境、pycharm编辑器/永久激活/翻译插件

python 零基础视频教程

Python 界面开发实战教程

Python 爬虫实战教程

Python 数据分析实战教程

python 游戏开发实战教程

Python 电子书100本

Python 学习路线规划

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
img

7ff58dff0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlaTM0Nzc5NTc5MA==,size_16,color_FFFFFF,t_70)

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-8py0vwMI-1710983202042)]

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 爬虫中,正则表达式是非常常用的技术,可以帮助我们从网页中提取出需要的信息。下面是一些常用的正则表达式符号和方法: 1. ".":匹配任意单个字符,除了换行符。 2. "^":匹配字符串的开始位置。 3. "$":匹配字符串的结束位置。 4. "*":匹配前一个字符出现 0 次或多次。 5. "+":匹配前一个字符出现 1 次或多次。 6. "?":匹配前一个字符出现 0 次或 1 次。 7. "{m}":匹配前一个字符出现 m 次。 8. "{m,n}":匹配前一个字符出现 m 到 n 次。 9. "(...)":分组匹配,匹配括号内的表达式。 10. "[...]":匹配括号内的任意一个字符。 11. "[^...]":匹配不在括号内的任意一个字符。 12. "\d":匹配数字,等同于 [0-9]。 13. "\D":匹配非数字,等同于 [^0-9]。 14. "\s":匹配空白字符,包括空格、制表符、换行符等。 15. "\S":匹配非空白字符。 16. "\w":匹配单词字符,包括字母、数字、下划线。 17. "\W":匹配非单词字符。 在 Python 中,使用 re 模块进行正则表达式的匹配。常用的方法包括: 1. re.compile(pattern):将正则表达式编译成一个对象,提高匹配效率。 2. re.search(pattern, string):在字符串中搜索匹配正则表达式的第一个位置。 3. re.findall(pattern, string):在字符串中搜索匹配正则表达式的所有位置,并返回一个列表。 4. re.sub(pattern, repl, string):将字符串中所有匹配正则表达式的字符替换为指定的字符串。 以上是一些常用的正则表达式符号和方法,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值