Python高级正则表达式

输出:

[‘让’,

‘尊敬’,

‘为了’,

‘这’,

‘法律’,

‘是’,

‘呼吸’,

‘经过’,

‘每一个’,

‘美国人’,

‘母亲’,

‘到’,

‘这’,

‘口齿不清’,

‘宝贝’,

‘那’,

‘闲聊’,

‘在’,

‘她’,

‘圈。’,

‘让’,

‘它’,

‘是’,

‘教’,

‘在’,

‘学校’,

‘在’,

‘神学院,’,

‘和’,

‘在’,

‘大学。’,

‘让’,

‘它’,

‘是’,

‘书面’,

‘在’,

‘引物’,

‘拼写’,

‘图书,’,

‘和’,

‘在’,

‘年鉴。’,

‘让’,

‘它’,

‘是’,

‘传教’,

‘从’,

‘这’,

‘讲坛’,

‘宣布’,

‘在’,

‘立法’,

‘大厅,’,

‘和’,

‘强制’,

‘在’,

‘这’,

“法院”,

‘的’,

‘正义。’,

‘和,’,

‘在’,

‘短的,’,

‘让’,

‘它’,

‘变得’,

‘这’,

‘政治的’,

‘宗教’,

‘的’,

‘这’,

‘国家。’]

现在我们来看一个字符串,它可能来自 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’,其中的数据按照如下方式重新分组:

1289,T83456 1289,Z22334 1205,T10032 1205,B77301 1205,T10786 1205,C77502 1410,K34001 1410,T98987

解决方案


练习 1 的解决方案

进口 重新

txt = 打开(“order_journal.txt” )。读()

数据 = {} #将包含chustomer-id作为键和oders作为值串

X 再。finditer ( r “customer-id ([\d\n] {4} )(.*?)customer-id \1” , txt , re . DOTALL ):

key , values = x 。组()

如果 密钥 的数据:

数据[键] + = 值

否则

数据[键] = 值

打开(“order_journal_regrouped.txt” , “W” ) 作为 FH :

用于 密钥 数据:

用于 art_no 数据[键] 。拆分():

fh 。写( f " {键} ,{ art_no } \n " )

我们可以检查新创建的文件的内容:

content = open ( “order_journal_regrouped.txt” ) 。读()

打印(内容)

输出:

1289,T83456

1289,Z22334

1205,T10032

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

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

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

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

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

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

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

[外链图片转存中…(img-Sphzo3y2-1713695009444)]

[外链图片转存中…(img-jQWCIU5Z-1713695009445)]

[外链图片转存中…(img-TkXxpcZ7-1713695009446)]

[外链图片转存中…(img-FQdcRJHF-1713695009447)]

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

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

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值