def regexread():
import re
result = ''
savefileagain = open('sliceeverfile3.txt','w')
#text=open('emeverslicefile4.txt','r')
text='09,11,14,34,44,10,11, 27886637, 0\n561, Tue, 5,Feb,2013, 06,25,31,40,45,06,07, 19070109, 0\n560, Fri, 1,Feb,2013, 05,21,34,37,38,01,06, 13063500, 0\n559, Tue,29,Jan,2013,'
pattern='\d\d,\d\d,\d\d,\d\d,\d\d,\d\d,\d\d'
#with open('emeverslicefile4.txt') as text:
f = re.findall(pattern,text)
for item in f:
print(item)
savefileagain.write(item)
#savefileagain.close()
上面写的函数解析文本并返回七个数字的集合。我有三个问题。
TypeError expected string or buffer
,即使阅读了一些帖子,我也无法解决。 这是我第一次使用正则表达式,所以请温柔!
答案 0 :(得分:10)
这应该做的伎俩,检查评论以解释我在这做什么=) 祝你好运
import re
filename = 'sliceeverfile3.txt'
pattern = '\d\d,\d\d,\d\d,\d\d,\d\d,\d\d,\d\d'
new_file = []
# Make sure file gets closed after being iterated
with open(filename, 'r') as f:
# Read the file contents and generate a list with each line
lines = f.readlines()
# Iterate each line
for line in lines:
# Regex applied to each line
match = re.search(pattern, line)
if match:
# Make sure to add \n to display correctly when we write it back
new_line = match.group() + '\n'
print new_line
new_file.append(new_line)
with open(filename, 'w') as f:
# go to start of file
f.seek(0)
# actually write the lines
f.writelines(new_file)
答案 1 :(得分:0)
你正走在正确的轨道上......
你将遍历文件: How to iterate over the file in python
并将正则表达式应用于每一行。当你意识到你正在尝试编写'item'时,上面的链接应该真正回答你所有的3个问题,而这个问题在该循环之外是不存在的。