CSV文件中的两列在if语句中不起作用?
我正在开发一个简单的应用程序,它可以读取发送过来的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]
上面的代码没有显示任何内容。但是如果我在条件判断中使用row[0]和row[3],它就能正常工作。所以问题出在第1列和第2列上,而第0列和第3列则没有问题。请问CSV文件的格式是否有问题?我是按照微软的步骤从Excel文件创建的CSV。
2 个回答
1
没错,问题就是出在那些空格上。要在Excel中去掉空格,你可以在有空格的那一列旁边插入一个新列,然后使用 =TRIM(C1).
这个公式。这样做之后,你就可以把处理好的数据复制粘贴到一个新文件里,然后从中创建一个CSV文件。
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)