我试图从一个目录中的多个csv文件中检索值。执行if row['opponent-points-per-game-rank'] == 6:
时,我收到一个密钥错误。当我做以下事情时:
if 'opponent-points-per-game-rank' in myfilereader.fieldnames:
testrank = [row.get('opponent-points-per-game-rank') for row in myfilereader]
它将找到列名。为什么它可以通过这种方式找到列名而不能通过另一种方式找到?这是我的csv文件的link。我现在的代码:
import os
import csv
testrank = []
directory = os.path.join("c:\\","Users\sm\OneDrive\TestProject")
for root,dirs,files in os.walk(directory):
for file in files:
if file.endswith(".csv"):
f=open(file, 'r')
myfilereader = csv.DictReader(f)
for row in myfilereader:
if row['opponent-points-per-game-rank'] == 6:
testrank.append(row['Team'])
f.close()
print(testrank)
我认为
row
是一个OrderedDict对象。这是我的解决办法。注意,您需要将v
强制转换为int,因为它是str我尝试使用您链接的文件复制此问题,但没有收到任何错误。但是
row['opponent-points-per-game-rank']
的值是一个字符串,因此row['opponent-points-per-game-rank'] == 6
的计算结果总是False
。当这个条件被int(row['opponent-points-per-game-rank']) == 6
所取代时,一切似乎都正常相关问题 更多 >
编程相关推荐