【发布时间】:2014-11-06 10:43:39
【问题描述】:
如果有人问及回答,请原谅我。如果是这样,请将其归结为我是编程新手,并且对正确搜索的了解不够。
我需要读入包含一系列数百个短语的文件,例如姓名或电子邮件地址,每行一个,用作已编译搜索词的一部分 - pattern = re.search(name) . 'pattern' 变量将用于搜索另一个超过 500 万行的文件,以识别并从相关行中提取选择字段。
为变量读入的名称文件的文本格式为:
John\n
Bill\n
Harry@helpme.com\n
Sally\n
到目前为止,我的以下代码不会出错,但也不会处理和关闭。如果我使用带有 sys.argv[1] 的稍微不同的代码手动传递名称,一切正常。粗体代码(应该是)是我遇到问题的区域 - 从“lines = open....”开始
import sys
import re
import csv
import os
searchdata = open("reallybigfile", "r")
Certfile = csv.writer(open('Certfile.csv', 'ab'), delimiter=',')
**lines = open("Filewithnames.txt", 'r')
while True:
for line in lines:
line.rstrip('\n')
lines.seek(0)
for nam in lines:
pat = re.compile(nam)**
for f in searchdata.readlines():
if pat.search(f):
fields = f.strip().split(',')
Certfile.writerow([nam, fields[3], fields[4]])
lines.close()
底部的代码(从“for f in searchdata.readlines():”开始)很好地定位、提取和写入字段。我一直无法找到读取 Filewithnames.txt 文件并让它使用每一行的方法。它要么挂起,就像这段代码一样,要么将文件的所有行读取到最后一行并仅返回最后一行的数据,例如'莎莉'。
提前致谢。
【问题讨论】:
-
你能从每个输入文件中添加几行样本吗?
-
输入文件与上面的类似,但通常是firstname.lastname。 realbig 文件的示例行可能看起来像 2014-06-03,2017-06-02,12345678901234567,5336789,40803A,"ACTIVE","bb-klm-ssl-Unc-1y-v6","AE" ,"cn=JOHN L. MELLON 123420,uid=john.mellon@helpme.com,ou=people,o=internal,dc=helpme,dc=com" 但行可能会有所不同。一致性在于我们正在寻找的搜索词。它并不总是符合上面显示的配置文件
标签: python python-2.7 python-3.x