gpt4 book ai didi

python - 如何指定变量作为 re.sub 中的第一个参数

转载 作者:太空宇宙 更新时间:2023-11-03 21:01:40 56 4
gpt4 key购买 nike

我最近才开始使用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 变量中的字符串,但我收到以下错误:

引发类型错误,“第一个参数必须是字符串或编译模式”类型错误:第一个参数必须是字符串或编译模式

如果我将 result1 变量放在 re.sub 语句中的引号中,如下所示,我不会收到错误,但输入文件不会使用替换字符串进行更新

result2 = re.sub('result1', r'(KNOWLEDGECENTER\/\t(\1)\/\)' +  
taxonomy, string4)

re.search 代码似乎可以作为 print (result1) 返回:输入文件中每一行的 <_sre.SRE_Match object at 0x02A120E0>

最佳答案

由于 re.sub 本身可以执行搜索,因此您不需要单独调用 re.search。事实上,您将丢失在结果匹配中调用 re.search 的正则表达式中的捕获组,因此在调用 re.sub 时替换字符串中的反向引用> 将无法引用任何内容。结合两个调用,它将起作用(下面的示例代码假设您要做的就是在 KNOWLEDGECENTER/ 之后添加一个选项卡:

for line in fileinput.input(fileToSearch):
result = re.sub('(KNOWLEDGECENTER/)(.*?/' + re.escape(taxonomy) + ')', r'\1\t\2', line)
file.write(result)

关于python - 如何指定变量作为 re.sub 中的第一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55669582/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com