将“match”对象替换为string、Python

2024-04-27 00:56:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用另一个字符串替换文本中的某些行。到目前为止,我找到了要替换为的文本:

text = open('sample','r').read()
regex = re.compile('.*#= min, max\s')
for match in regex.finditer(text):
    print match.group(0) #this is what i want to replace

编辑:也试过了

^{pr2}$

文本保持不变。是不是我的正则表达式搞砸了?我在别的地方用过同样的,没问题。它也是一个简单的正则表达式。在

我怎么把它换成另一条线?谢谢!在


Tags: sample字符串textin文本reforread
3条回答

尝试:

subbedlines = []

with open('sample','r') as textreader:
    lines = textreader.read().split('\n')

for line in lines:
    subbedlines.append(re.sub('.*#= min, max\s', "HOLA", line))

如果正则表达式正确并且文本文件中的行匹配,则应该可以工作。 要再次写入文件,只需执行以下操作:

^{pr2}$

也许我不明白,但为什么你要一行接一行地迭代,而不是像这样替换每一行:

import re

with open("text.txt") as text:
    new_text = re.sub("jj", "xx", text.read())
    with open("newtext.txt", "w") as result:
        result.write(new_text)

但也许我错过了什么。在

我不知道我是否明白你想要什么。但是regex对象的^{} function可以用要替换的文本调用,例如

regex.sub("new text", text)

或者使用一个获取匹配对象并返回要替换的文本的函数,例如

^{pr2}$

这样你就可以完全自由地决定用什么来代替。在

请注意,由于regex中的贪婪.*,这可能只替换最后一部分。一定要使用$(行尾)、^(行首)、.*?(非贪心版本)和re选项MULTILINE。在

相关问题 更多 >