回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>使用<code>re.findall()</code>我成功地获得了字符串中正则表达式的多个返回匹配项。但是,返回的对象是字符串中匹配项的列表。这不是我想要的。</p>
<p>我想要的是用别的东西替换所有的火柴。我试图使用与您在re.sub中使用的语法相似的语法来执行以下操作:</p>
<pre><code>import json
import re
regex = re.compile('([a-zA-Z]\"[a-zA-Z])', re.S)
filepath = "C:\\Python27\\Customer Stuff\\Austin Tweets.txt"
f = open(filepath, 'r')
myfile = re.findall(regex, '([a-zA-Z]\%[a-zA-Z])', f.read())
print myfile
</code></pre>
<p>但是,这会产生以下错误:</p>
<pre><code>Traceback (most recent call last):
File "C:/Python27/Customer Stuff/Austin's Script.py", line 9, in <module>
myfile = re.findall(regex, '([a-zA-Z]\%[a-zA-Z])', f.read())
File "C:\Python27\lib\re.py", line 177, in findall
return _compile(pattern, flags).findall(string)
File "C:\Python27\lib\re.py", line 229, in _compile
bypass_cache = flags & DEBUG
TypeError: unsupported operand type(s) for &: 'str' and 'int'
</code></pre>
<p>在我需要用原始Python对象中的其他内容替换所有匹配项的最后一点语法中,有人能帮助我吗?</p>
<p><strong>编辑:</strong></p>
<p>根据收到的评论和回答,下面是我尝试将一个regex与另一个regex进行细分:</p>
<pre><code>import json
import re
regex = re.compile('([a-zA-Z]\"[a-zA-Z])', re.S)
regex2 = re.compile('([a-zA-Z]%[a-zA-Z])', re.S)
filepath = "C:\\Python27\\Customer Stuff\\Austin Tweets.txt"
f = open(filepath, 'r')
myfile = f.read()
myfile2 = re.sub(regex, regex2, myfile)
print myfile
</code></pre>
<p>这将产生以下错误:</p>
<pre><code>Traceback (most recent call last):
File "C:/Python27/Customer Stuff/Austin's Script.py", line 11, in <module>
myfile2 = re.sub(regex, regex2, myfile)
File "C:\Python27\lib\re.py", line 151, in sub
return _compile(pattern, flags).sub(repl, string, count)
File "C:\Python27\lib\re.py", line 273, in _subx
template = _compile_repl(template, pattern)
File "C:\Python27\lib\re.py", line 258, in _compile_repl
p = sre_parse.parse_template(repl, pattern)
File "C:\Python27\lib\sre_parse.py", line 706, in parse_template
s = Tokenizer(source)
File "C:\Python27\lib\sre_parse.py", line 181, in __init__
self.__next()
File "C:\Python27\lib\sre_parse.py", line 183, in __next
if self.index >= len(self.string):
TypeError: object of type '_sre.SRE_Pattern' has no len()
</code></pre>