我有一个txt文件,其中包含很多字符串,例如
Chr(101)
Chr(97)
Chr(104)
...
我使用下面的代码使用regex查找所有出现的此类字符串。我想做的是用它的计算输出替换每个事件。因此,在本例中,我将上述内容替换为:
^{pr2}$我的代码如下:
with open(oFile, "r") as f:
for line in f:
# find all occurrences of Chr(\d+\) and put in a list
chrList = [str(s) for s in re.findall(r'Chr\(\d+\)', line)]
# print chrList
for c in chrList:
# print eval(c.lower())
out = re.sub(c, eval(c.lower()), line)
如果我打印eval(c.lower())
行,那么它将按预期输出。但是re.sub
行失败,并出现以下错误:
raise error, v # invalid expression sre_constants.error: bogus escape (end of line)
我不知道我哪里出错了。在
你不需要使用不同的功能来替换。您可以使用
re.sub
的函数形式调用eval
:相同的东西,但没有
eval()
或导入:你想逃离你的搜索模式because parenthesis are special characters in regular expressions。您可以使用^{} 轻松完成此操作。在
举个例子:
^{pr2}$既然如此,为什么不直接使用
replace()
?在相关问题 更多 >
编程相关推荐