2014-03-07 69 views
1

我已經編寫了一個程序來調用文件中的匯率,但它打印輸出到達行,有一個邏輯錯誤,但我找不到它。正在搜索一個CSV文件python

import csv 
exRtFile = open ('exchangeRate.csv') 
exchReader = csv.reader(exRtFile) 
newCurrency = raw_input("Please enter the currency you would like to convert to: ") 
for row in exchReader: 
     currency = row[0] 
     if currency == newCurrency: 
      newRt = row[1] 
      print(newRt) 
      break 

print("Sorry, that is not a valid currency") 

文件:

Pound Sterling,1 
Euro,1.22 
US Dollar,1.67 
Japanese Yen,169.948 
+0

什麼分隔符是您使用?默認爲逗號,但在文件中沒有看到任何逗號。 –

+0

你能否詳細說明一下,比如預期的輸出結果和你得到的結果。 –

+0

excel中的CSV(逗號分隔) – user3165683

回答

2

如果我正確理解你的問題,問題是它打印"Sorry..."線,即使找到文件中的貨幣。爲了防止這種情況,您可以add an else to the for loop

for row in exchReader: 
    currency = row[0] 
    if currency == newCurrency: 
     newRt = row[1] 
     print(newRt) 
     break 
else: 
    print("Sorry, that is not a valid currency") 

這樣,else塊將只當環路正常退出,即沒有break執行。

+0

您擊敗了我12秒! >; - ] – Alfe

2

您需要指定分隔符或您的csv文件;對我來說,它看起來像製表符分隔的,因此:

exchReader = csv.reader(exRtFile, delimiter='\t') 

然後,你必須明白,break只有打破循環,而不是出了整個計劃。爲此,您將需要使用sys.exit()。但是,一個更好的解決方案是else子句for循環:

for row in exchReader: 
    currency = row[0] 
    if currency == newCurrency: 
     newRt = row[1] 
     print(newRt) 
     break 
else: 
    print("Sorry, that is not a valid currency") 
+0

哦,你在你的問題中將選項卡更改爲逗號。然後使用'delimiter =',''(當然也可以是默認值)。 – Alfe