[英]Python for loop only executes once when looping csv file
我是python的新手,遇到了一個小腳本的麻煩。
當前定義的for循環僅運行一次。
這是代碼(每行有8個元素):
#!/usr/local/bin/python
def string_to_xml(string):
entries = string.split(',')
result = "<item>\n"
result += "\t<distributor>" + entries[0] + "</distributor>\n"
result += "\t<number>" + entries[1] + "</number>\n"
result += "\t<description>" + entries[2] + "</description>\n"
result += "\t<brand>" + entries[3] + "</brand>\n"
result += "\t<casesize>" + entries[4] + "</casesize>\n"
result += "\t<unitsize>" + entries[5] + "</unitsize>\n"
result += "\t<caseprice>" + entries[6] + "</caseprice>\n"
result += "\t<unitprice>" + entries[7] + "</unitprice>\n"
result += "</item>"
return result
with open("input.csv") as csvfile:
for line in csvfile:
print string_to_xml(line)
這樣,它只打印一次調用string_to_xml的結果。 如果我將for循環中的語句更改為此:
for line in csvfile:
print line
它可以正確打印文件的每一行。
為什么調用我的函數string_to_xml導致循環僅運行一次?
編輯:這是我的csv文件的前兩行(如果有幫助的話):
BIRITE,130405,Steak Sauce,Kraft,24,5oz,43.96,1.83
BIRITE,441045,Anchovy Filet,Maria,12,13oz,51.83,4.32
使用open('input.csv', "U")
打開文件。
“ U”告訴python使用通用換行符功能。 這允許python自動檢測正在使用哪種換行符。 問題在於不同的平台執行換行的方式不同。
您可能想弄清楚為什么會有奇怪的換行符。 您可以在此處輕松解決此問題,但可能會再次出現,並且稍后會很痛苦。
注意:在Linux機器上完成
由於此代碼似乎是為其他人運行的,因此讓我們創建一個CSV,然后在其上再次運行相同的代碼,這將澄清這是否是編碼問題。
a=open('test.csv','wb')
a.write("BIRITE,130405,Steak Sauce,Kraft,24,5oz,43.96,1.83\n"+
"BIRITE,441045,Anchovy Filet,Maria,12,13oz,51.83,4.32\n")
a.close()
def string_to_xml(string):
entries = string.split(',')
result = "<item>\n"
result += "\t<distributor>" + entries[0] + "</distributor>\n"
result += "\t<number>" + entries[1] + "</number>\n"
result += "\t<description>" + entries[2] + "</description>\n"
result += "\t<brand>" + entries[3] + "</brand>\n"
result += "\t<casesize>" + entries[4] + "</casesize>\n"
result += "\t<unitsize>" + entries[5] + "</unitsize>\n"
result += "\t<caseprice>" + entries[6] + "</caseprice>\n"
result += "\t<unitprice>" + entries[7] + "</unitprice>\n"
result += "</item>"
return result
with open("test.csv") as csvfile:
for line in csvfile:
print string_to_xml(line)
輸出的結果是:
<item>
<distributor>BIRITE</distributor>
<number>130405</number>
<description>Steak Sauce</description>
<brand>Kraft</brand>
<casesize>24</casesize>
<unitsize>5oz</unitsize>
<caseprice>43.96</caseprice>
<unitprice>1.83</unitprice>
</item>
<item>
<distributor>BIRITE</distributor>
<number>441045</number>
<description>Anchovy Filet</description>
<brand>Maria</brand>
<casesize>12</casesize>
<unitsize>13oz</unitsize>
<caseprice>51.83</caseprice>
<unitprice>4.32</unitprice>
</item>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.