<p>我有一个txt文件,其中包含很多字符串,例如</p>
<pre><code>Chr(101)
Chr(97)
Chr(104)
...
</code></pre>
<p>我使用下面的代码使用regex查找所有出现的此类字符串。我想做的是用它的计算输出替换每个事件。因此,在本例中,我将上述内容替换为:</p>
^{pr2}$
<p>我的代码如下:</p>
<pre><code>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)
</code></pre>
<p>如果我打印<code>eval(c.lower())</code>行,那么它将按预期输出。但是<code>re.sub</code>行失败,并出现以下错误:</p>
<blockquote>
<pre><code>raise error, v # invalid expression sre_constants.error: bogus escape (end of line)
</code></pre>
</blockquote>
<p>我不知道我哪里出错了。在</p>
<p>相同的东西,但没有<code>eval()</code>或导入:</p>
<pre><code>strings = ['Chr(100)', 'Chr(101)', 'Chr(102)']
values = [chr(x) for x in (int(c.replace("Chr(", "").replace(")","")) for c in strings)]
</code></pre>