CSV文件中的两列不适用于if语句?

时间:2014-06-29 17:16:32

标签: python csv if-statement

我正在开发一个简单的应用程序,它读取发送的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。

2 个答案:

答案 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。