不处理 CSV 中的第一行 [重复]

Posted

技术标签:

【中文标题】不处理 CSV 中的第一行 [重复]【英文标题】:not processing the first row in CSV [duplicate] 【发布时间】:2016-09-30 00:26:59 【问题描述】:

在下面的代码中,我如何逃避处理 print int(value) - int(dict2[key]) 的第一行?

file1 = open("file1.csv", "r")
file2 = open("file2.csv", "r")

csv_reader1 = csv.reader(file1)
csv_reader2 = csv.reader(file2)

dict1 = 
for row in csv_reader1:
    dict1[row[0],row[1]] = row[2]
dict2 = 
for row in csv_reader2:
    dict2[row[0],row[1]] = row[3]

for key, value in dict1.iteritems():
    print key, value

for key, value in dict2.iteritems():
    print key, value

for key, value in dict1.iteritems():
    if key in dict2.keys():
        print int(value) - int(dict2[key]) 

file1.csv 是:

name, last_name, age, city, birthday, date
mona, jalal, 28, Madison, 7/23/1987, 5/31/2016
james, cardel, 29, DC, 7/23/1986, 5/1/2016
kate, spade, 30, NYC, 7/32/1985, 5/24/2016

file2.csv 是:

name, last_name, pet, pet_age
mona, jalal, cat, 2
kate, spade, dog, 3
mina, nik anjam, bird, 1

我正在尝试减去人和他/她宠物的年龄,如果它出现在两个 CSV 中,但我收到以下错误,因为它也处理第一行:

Traceback (most recent call last):
26
  File "/Users/mona/PycharmProjects/PythonCodes/CSV_calculation.py", line 27, in <module>
27
    print( int(value) - int(dict2[key]) )
ValueError: invalid literal for int() with base 10: 'age'

Process finished with exit code 1

【问题讨论】:

使用 csv.DictReader 之后使用名称映射非常容易 我想自己创建字典不使用 .DictReader @Apero 【参考方案1】:

要跳过第一行使用 next() 然后继续你的代码:

next(csv_reader1, None)

这是this question的骗子

【讨论】:

None 参数可防止您在文件为空时引发 StopIteration 感谢None的详细信息【参考方案2】:

跳过第一行:

csv_reader1 = csv.reader(file1)
next(csv_reader1) # skip 1st row
csv_reader2 = csv.reader(file2)
next(csv_reader2) # skip 1st row

【讨论】:

以上是关于不处理 CSV 中的第一行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有sed的情况下替换csv文件中的一行[重复]

从Python中的csv文件中删除第一列[重复]

如何拉伸一行元素中的第一个元素[重复]

cmd去除csv首行

Python中的大型csv文件[重复]

Javascript函数仅适用于表格的第一行[重复]