当您有多个匹配组时,
re.findall返回
listn-
tuples:
re.findall('(foo).(bar)', 'foo foo bar foo|bar')Out[5]: [('foo', 'bar'), ('foo', 'bar')]因此,很明显每个
entryin
tuples是一个
tuple。当您将传递
tuple给
re.sub时,它会抱怨。
tuples = re.findall('(foo).(bar)', 'foo foo bar foo|bar')for entry in tuples: re.sub('oo','ox',entry).../usr/lib/python3.3/re.py in sub(pattern, repl, string, count, flags) 168 a callable, it's passed the match object and must return 169 a replacement string to be used."""--> 170 return _compile(pattern, flags).sub(repl, string, count) 171 172 def subn(pattern, repl, string, count=0, flags=0):TypeError: expected string or buffer因此,做其他事情。也许使用
map:
for entry in tuples: print(' '.join(map(lambda s: re.sub('oo','ox',s),entry)))fox barfox bar或者更容易理解
writer.writerow([re.sub(r'W', " ",s) for s in entry])
等等



