我正在开发一个简单的应用程序,它读取发送的CSV文件,并根据列中的数据点生成一些结果。 Data.csv:
Something, everything, 6, xy
Something1, everything1, 7, ab
Something2, everything2, 9, pq
我打开文件如下,
FileOpen = opne('../sources/data.csv', 'rU')
FileRead = csv.reader(FileOpen, delimiter = ',')
FileRead.next()
for row in FileRead:
#This does not work
if row[0] == 'something' and row[1] == 'something1':
print row[2]
#This works
if row[0] == 'something' and row[3] = 'xy':
print row[2]
上面的代码没有显示任何内容。但是如果我在if条件中使用row [0]和row [3],那么效果很好。所以问题在于第1,2列。但是0和3列工作正常。 CSV的文件格式错误了吗?我遵循microsoft过程从excel文件创建csv。
答案 0 :(得分:5)
row
的使用和命名完全正确。主要问题是文件中的空白区域。如果我print row
,我会
['Something', ' everything', ' 6']
^ ^
解决方案最有可能处理
Dialect.skipinitialspace
When True, whitespace immediately following the delimiter is ignored. The default is False.
从这里https://docs.python.org/2/library/csv.html#dialects-and-formatting-parameters
您在构造函数中传递此选项,如下所示:
FileRead = csv.reader(FileOpen, delimiter = ',', skipinitialspace=True)
答案 1 :(得分:1)
是的,毕竟他们是空间。要删除Excel中的空格,请使用空格和用户=TRIM(C1).
在列附近插入新列。然后,您可以将数据粘贴到新文件中并从中创建CSV。