gpt4 book ai didi

python - 在Python中从文件中读取正则表达式

转载 作者:行者123 更新时间:2023-12-01 04:20:26 25 4
gpt4 key购买 nike

我正在尝试使用 python 从文件中读取一堆正则表达式。

正则表达式位于文件 regexes.csv 中,每行一对,各对之间用逗号分隔。例如

<\? xml([^>]*?)>,<\? XML$1>
peter,Peter

我在做

detergent = []
infile = open('regexes.csv', 'r')
for line in infile:
line = line.strip()
[search_term, replace_term] = line.split(',', 1)
detergent += [[search_term,replace_term]]

这不会产生正确的输入。如果我打印洗涤剂我得到

['<\\?xml([^>]*?)>', '<\\?HEYXML$1>'],['peter','Peter']]

它似乎正在转义反斜杠。

此外,在一个包含以下内容的文件中

<? xml ........>

在内容中进一步编写的命令re.sub(search_term,replace_term,file_content)将其替换为

<\? XML$1>

因此,$1 并未恢复该对的第一个正则表达式中的第一个捕获组。

从文件中输入正则表达式以便稍后在 re.sub 中使用的正确方法是什么?

当我在脚本中包含正则表达式时,我会将它们写入 r'...' 中,但我不确定读取文件时会遇到什么问题。

最佳答案

从文件中读取正则表达式没有问题或特殊要求。反斜杠的转义就是 python 表示包含反斜杠的字符串的方式。例如,假设您直接在代码中将正则表达式定义为 rgx = r"\?"。尝试打印它,您会看到它以相同的方式显示...

>>> r"\?"
>>> '\\?'

$1 未被替换的原因是这不是组引用的语法。正确的语法是\1

关于python - 在Python中从文件中读取正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33789341/

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