例如......如果以下是king.txt的内容:
asdfbaertybawerdb.....
我有以下代码。(使用正则表达式)..但它输出为sdfertywerd ....
import re
f = open('king.txt','r')
data = f.read()
y = re.findall(r'a(.*?)b',data,re.DOTALL)
fb = open('one.txt' ,'w+' )
for line in y :
fb.write(line)
fb.close()
答案 0 :(得分:1)
你的非贪婪的正则表达式似乎已经做对了。
>>> print re.findall(r'a(.*?)b', 'asdfbaertybawerdb', re.DOTALL)
['sdf', 'erty', 'werd']
问题是这些结果都被写入同一个文件。 one.txt
。
请改为尝试:
s = 'asdfbaertybawerdb'
results = re.findall(r'a(.*?)b', s, re.DOTALL)
for n, result in enumerate(results):
with open('%s.txt' % n+1, 'w') as outfile:
outfile.write(result + '\n')
这将创建名为1.txt,2.txt,3.txt等的输出文件。如果需要,您可以弄清楚如何将文件名映射到文本名称。