【发布时间】:2019-04-13 20:27:48
【问题描述】:
我最近才开始使用python,之前从未写过任何代码。我使用正则表达式来匹配输入文件中的字符串(这是成功的),但我真的很难找到一种方法来使用正则表达式将文件中的字符串替换为另一个字符串。
with open( fileToSearch, "r+" ) as file:
for line in fileinput.input( fileToSearch ):
string4=line
result1 = re.search(r'(KNOWLEDGECENTER\/.*?\/)' + re.escape(taxonomy), string4)
print (result1)
result2 = re.sub(result1, r'(KNOWLEDGECENTER\/\t(\1)\/\)' + taxonomy, string4)
print (result2)
file.write(result2)
我预计 re.sub 会用替换字符串替换 result1 变量中的字符串,但我收到以下错误:
引发类型错误,“第一个参数必须是字符串或编译模式” TypeError: 第一个参数必须是字符串或编译模式
如果我在 re.sub 语句中将 result1 变量放在引号中,如下所示,我不会收到错误消息,但输入文件不会使用替换字符串进行更新
result2 = re.sub('result1', r'(KNOWLEDGECENTER\/\t(\1)\/\)' +
taxonomy, string4)
re.search 代码似乎在 print (result1) 返回时起作用:<_sre.sre_match object at> 用于输入文件中的每一行
【问题讨论】:
标签: python regex python-2.7