我有2个CSV文件。在获取列表中的每个元素后,我要用列表中的元素B作为匹配元素。在
问题是B中有两列。第一列有唯一的数字,第二列有要修复的字符串。在
我得到的输出是:
628227teitARMTEteke : iQIARMTEMAC
628226iQIARMTEMAC 9 : iQIARMTEMAC
628229iQIAConfigCH : iQIAConfigCH
627701iQIAConfigCH : iQIAConfigCH
但我希望我的输出是:
^{pr2}$编码
import csv
from nltk.metrics import distance
with open("all_correct_promo.csv","rb") as file1:
reader1 = csv.reader(file1)
correctPromoList = [''.join(i) for i in reader1]
# print correctPromoList
with open("all_extracted_promo3.csv","rb") as file2:
reader2 = csv.reader(file2)
extractedPromoList = [''.join(i) for i in reader2]
#print extractedPromoList
incorrectPromo = {}
count = 0
for extracted in extractedPromoList:
#print 'Computing %dth promo code...' % count
incorrectPromo[extracted] = find_min_edit(extracted,correctPromoList) # get comma separated str of real promo codes nearest to extracted
count+=1
#print incorrectPromo
for key, value in incorrectPromo.iteritems():
print key ,':', value
现在,唯一的数字是通过字符串读取的,这将影响字符串的更正方式。我希望数字与字符串一起显示,但不影响字符串与列表A中字符串匹配的方式
从all_extracted_promo3.csv中获取示例
628229 iQIABundUPGR
628229 iQIAPortUPGR
628229 iQIAConfigCH
628229 iQIARMTEMAC 9
所有样本均正确_促销.csv在
iQ BundleUPGR
IQ MANAGED
IQ04 BRP
IQ1MOBILSUP
IQ2MOBILSUP
iQBundIeUPGR
iQBundle 1
iQBundle 2
撇开一种奇怪的获取数据的方法——至少可以这么说——我将严格地回答
csv.reader
。在为了使
csv.reader
区分列,您需要根据您的.csv
设置其dialect
。正如its docs所说,它接受所有独立的dialect formatting parameters作为关键字参数。在这里,您可能对delimeter
感兴趣:从节选来看,} only supports single-character delimiters though :
^{pr2}$all_extracted_promo3.csv
有两个空格作为分隔符,all_correct_promo.csv
使用一个空格。^{因此,您要么绕过这个问题(忽略第二个元素),要么更改生成文件的软件(例如,使用标准逗号作为分隔符),要么使用其他工具来解析文件。在
相关问题 更多 >
编程相关推荐