【发布时间】:2016-12-19 13:50:12
【问题描述】:
我尝试比较两个 csv 文件。第一个文件 (movements.csv) 有 14 列,第二个 csv (LCC.csv) 有一个单列。我想检查movements.csv中第8列的条目(字符串)是否出现在LCC.csv的第1列中。如果是,则在第 14 栏中填写“是”,如果不是“否”。到目前为止我尝试的代码是和我收到的错误消息:
import csv
f1 = file('LCC.csv', 'rb')
f2 = file('movements.csv', 'rb')
f3 = ('output.csv', 'wb')
c1 = csv.reader(f1)
c2 = csv.reader(f2)
c3 = csv.writer(f3)
movements = list(c2)
for LCC_row in c1:
row = 0
found = False
for movements_row in movements:
output_row = movements_row
if movements_row[7] == LCC_row[0]
output_row.append('Yes')
found = True
break
row += 1
if not found:
output_row.append('No')
c3.writerow(output_row)
f1.close()
f2.close()
f3.close()
我是 python 的初学者,所以任何建议都非常感谢!最佳情况下,两列之间的检查也将忽略字符串是否以大写字母书写。
错误信息出现在
之后c3.writerow(output_row)
作为
Traceback(最近一次调用最后一次):
File "<stdin>", line 1, in <module>
_csv.Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
>>>
LCC.csv(无标题):
Air Ab
Jamb
Sw
AIRF
EURO
movements.csv(有标题):
ap,ic,year,y_m,pas,da,ty,airl,ic_a,dest_orig,ic_d,coun,cont,LCC
Zue,LSZH,2005,200501,25,1/1/2005,Dep,"EURO",EUJ,"Mans C",EG,Gb,Eu,
Zue,LSZH,2005,200501,204,1/1/2005,Arr,"Sw",SWR,"Dar",HA,Tans,A,
Ba,LSZM,2005,200501,191,1/1/2005,Arr,"AIRF",AFR,"PG",LG,Fr,Eu,
Zue,LSZH,2005,200501,228,1/1/2005,Dep,"THA",THA,Bang,VD,Th,As,
如前所述,最后一列 (LCC) 目前完全为空
【问题讨论】:
-
“不工作”是什么意思?
-
在 if Movements_row[7] == LCC_row[0] 后收到一条错误消息,即:文件“
”,第 6 行 if Movements_row[7] == LCC_row[0] ^ SyntaxError : 无效语法 -
请使用错误消息编辑您的问题。并清楚地标出是哪条线引起的。
-
@AnnaStünzi:用pandas解决这个问题可以吗??
-
你在 if 语句后错过了一个 ' : '