我正在处理两个大文件;大约每行100K行,我想在csv文件#2中搜索csv文件#1,然后根据匹配条件将csv文件#1中的另一个字符串连接到csv文件#2中的行。以下是我正在使用的数据和预期输出的示例:将CSV行与来自第二个CSV文件的字符串匹配合并
文件#1:要在文件#2中匹配的字符串是第2个元素; 1st将被附加到文件#2中的每个匹配行。 (整数要追加是粗体;串要被匹配为斜体为清楚起见只)
行1:
,mta0000cadd503c.mta.net
第2排:
,mta0000CADD5638.MTA.NET
行3:
,mta00069234e9a51.DT.COM
文件#2:
第1行:
4246,211-015617,mta0000cadd503c.mta.net,老,NW MG2,BBand2 ESA,主动
行2:
7251,帐户mta0000CADD5638 .MTA.NET,FQDN,NW MG2,BBand2 ESA,主动
行3:
536887946,874-22558501,mta00069234e9a51.DT.COM, “P”,NW MG2,BBand2 ESA,主动
所需的输出从文件#1到整行接合粗体整数字符串在文件#2基于字符串匹配文件#1和文件#2之间:
行1:
4246,211-015617,mta0000cadd503c.mta。净,老,NW MG2,BBand2 ESA,活动,
行2:
7251,帐户mta0000CADD5638.MTA.NET,FQDN,NW MG2,BBand2 ESA ,活动,
行3:
536887946,874-22558501,mta00069234e9a51.DT.COM, “P”,NW MG2,BBand2 ESA,活动,
有许多情况下,在匹配字符串的情况下文件#1与文件#2的情况不匹配,但是字符匹配,因此对于匹配标准,情况可以被忽略。字符大小写在附加了文件#1中的整数字符串后,需要保存在文件#2中。
我是一个python newb,我已经在这里呆了一段时间,并在SE中搜索帖子,但似乎无法提供工作代码,使我可以直接打印出来文件#2中的一行与文件#1中的字符串匹配。我已经尝试了其他一些方法,比如写字典,使用Dictreader等,但还没有能够清除那些在这些方法中看起来很简单的错误,所以我试图将它解开为简单的列表,到达可以使用列表理解来合并数据的地步,然后将其写回到名为output的文件中,最终将该文件写回到csv文件。任何帮助或建议将不胜感激。运行此之后
import csv
sg = []
fqdn = []
output = []
with open(r'file2.csv', 'rb') as src:
read = csv.reader(src, delimiter=',')
for row in read:
sg.append(row)
with open(r'file1.csv', 'rb') as src1:
read1 = csv.reader(src1, delimiter=',')
for row in read1:
fqdn.append(row)
output = output.append([s[0] for s in sg if fqdn[1] in sg])
print output
结果是:
无
进程退出代码为0
output.append修改原地输出并返回None。你也应该使用'.extend()'而不是'.append()'。 'append'将一个项目追加到列表中,而'extend'追加列表中的所有项目或迭代到列表中。而且在大多数情况下,更容易从for循环开始,而不是理解,因为在理解中,你倾向于过多地排成一行,这很快就会令人困惑,尤其是如果你对语言不熟悉的话。查看我的答案,找到一个简单的for-loop解决方案。 – cg909