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

Gra*_*y M 0 python csv if-statement

我正在开发一个简单的应用程序,它读取发送的CSV文件,并根据列中的数据点生成一些结果.Data.csv:

Something, everything, 6, xy
Something1, everything1, 7, ab
Something2, everything2, 9, pq
Run Code Online (Sandbox Code Playgroud)

我打开文件如下,

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] 
Run Code Online (Sandbox Code Playgroud)

上面的代码没有显示任何内容.但是如果我在if条件中使用row [0]和row [3],那么效果很好.所以问题在于第1,2列.但是0和3列工作正常.CSV的文件格式错误了吗?我遵循microsoft过程从excel文件创建csv.

Jas*_*per 5

使用和命名row是完全正确的.主要问题是文件中的空白区域.如果我print row,我明白了

['Something', ' everything', ' 6']
               ^              ^
Run Code Online (Sandbox Code Playgroud)

解决方案最有可能处理

Dialect.skipinitialspace

When True, whitespace immediately following the delimiter is ignored. The default is False.
Run Code Online (Sandbox Code Playgroud)

从这里https://docs.python.org/2/library/csv.html#dialects-and-formatting-parameters

您在构造函数中传递此选项,如下所示:

FileRead = csv.reader(FileOpen, delimiter = ',', skipinitialspace=True)
Run Code Online (Sandbox Code Playgroud)