2015-06-21 45 views
-3

我試圖在CSV文件中適合ELSE聲明中的變量。ELSE對CSV文件不起作用的聲明

CSV文件:

 
abcd, qwerty, aoo9 
afjd, wijfs, aaaa 
12as, 54as, oozz 

我已經嘗試以下操作:

string1 = raw_input('User input: ') 
with open('FILE.csv', "rb") as csvfile: 
     z = csv.reader(csvfile, delimiter=',') 
     for row in z: 
      if string1 in row[1]: 
       print 'A' 
      else: 
       print 'B' 
       sys.exit() 

然而,無論用戶的輸入是否是row[1]與否,它仍然會打印 'B' 。

我預計,如果用戶輸入qwertywijfs,或54as作爲字符串1,所有的謊言在row[1],它將打印「A」,但是如果用戶輸入的東西STRING1確實不row[1],它將打印'B'

我也曾嘗試:

elif variable not in row [1]: #... 

但是,這並不工作。

謝謝。

+0

你檢查過「行[1]」的內容嗎?此外,這些元素是基於0的索引。所以,第一個元素是'row [0]' – karthikr

+0

你是說,而不是打印'A'或'B',它會打印'A'或什麼也不做? – Gabe

+1

'變量'初始化如何? – V15I0N

回答

0

顯然,variablerow[1]不包含您認爲它包含的內容。添加打印語句如下:

for row in z: 
     print '<{}> ?= <{}>'.format(variable, row[1]) # add this line. 
     if variable in row[1]: 

看看這兩個變量(包括前導空白或尾隨空白)是什麼。最有可能的是,他們不會包含你認爲他們包含的內容。

+0

我按照你的建議做了,他們確實包含了我認爲他們所做的事情:( – iAmNewToPYTHON

+0

請顯示輸出,包括尖括號,並且檢查兩個變量的*類型*以確保你'再不是要比較的字符串爲Unicode –

+0

' = #新線B' – iAmNewToPYTHON

1

您的CSV文件包含空格。如果輸入" querty"而不是"querty",則程序將按預期運行。

您可以修改CSV文件或使用strip函數刪除row[1]的前導和尾部空白。

或使用csv.readerskipinitialspace參數。 ;)

+1

如果他或她已經接受了給定的建議並*打印了darn字符串*,那麼這對OP來說是顯而易見的。有些人不會允許自己得到幫助。 –

+0

@LarryLustig:我完全同意你的看法。 – Falko

+0

@Falko謝謝你的建議,雖然我早些時候嘗試過,但它不起作用,仍然是同樣的問題 – iAmNewToPYTHON