600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Python正则表达式文本替换

Python正则表达式文本替换

时间:2022-05-27 19:54:10

相关推荐

Python正则表达式文本替换

Python正则表达式文本替换

工具

re模块中的sub(parm1, parm2)函数

参数1(parm1): 匹配的模式参数2(parm2): 替换的模式

示例

将日期格式从“11/28/”改为“-11-28

import retext='今天是:11/28/'print(re.sub(r'(\d+)/(\d+)/(\d+)',r'\3-\1-\2',text)) # \3表示第一个()中的文本print(text)

# 如果打算用相同的模式执行重复替换,可以考虑先将 模式编译 以获得更好的性能。import retext='今天是:11/28/'datepat=pile(r'(\d+)/(\d+)/(\d+)') # 模式编译print(text)print(datepat.sub(r'\3-\1-\2',text))

今天是:11/28/今天是:-11-28

将日期格式从 “今天是:11/28/” 改为 “今天是: Nov 28"

(对于更加复杂的情况,可以指定一个替换回调函数。)

import refrom calendar import month_abbrtext='今天是:11/28/'datepat=pile(r'(\d+)/(\d+)/(\d+)')# 替换回调函数。 def change_date(m):mon_name=month_abbr[int(m.group(1))] # 将 11 转换为 Novreturn '{} {} {}'.format(m.group(3),mon_name,m.group(2)) # m.group(3) 匹配的第三个括号(\d+)print(text)print(datepat.sub(change_date,text))

今天是:11/28/今天是: Nov 28

将 python2 中的 print “XXX” 转换为 python3 中的 print(“XXX”)

import refilename = "PSOProblems.py" # 被替换的文件名with open(filename, 'r') as fp:text = fp.read()cp = pile(r'print ([^a-zA-Z0-9].*)\n') # 模式编译# 替换回调函数。def change_date(m):return f'print({m.group(1)})\n'newText, n = cp.subn(change_date, text)with open(f"new_{filename}", 'w') as fp:fp.write(newText)print(f"完成{n}处替换!")

完成37处替换!

其他

获取一共完成了多少次替换,可以使用re.subn()代替re.sub(), 其 返回值 为新文本次数

以上式为例:

import retext='今天是:11/28/,昨天是11/27/'datepat=pile(r'(\d+)/(\d+)/(\d+)')new_text,n=datepat.subn(r'\3-\1-\2',text)print(text)print(new_text)print(n)

参考Reference

/python/python-reg-expressions.html

/article/168336.htm

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。