当循环csv-fi时,Python for loop只执行一次

2024-05-16 08:09:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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_到\u xml的结果打印出来。如果我将for循环中的语句改为:

^{pr2}$

它正确地打印文件的每一行。在

为什么调用函数string“到”xml会导致循环只运行一次?在

编辑:如果这有帮助,以下是我的csv文件的前两行:

BIRITE,130405,Steak Sauce,Kraft,24,5oz,43.96,1.83
BIRITE,441045,Anchovy Filet,Maria,12,13oz,51.83,4.32

Tags: tonumberforstringdescriptionxmlresultitem
2条回答

注意:在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)

打印输出为:

^{pr2}$

使用open('input.csv', "U")打开文件。在

“U”告诉python使用universalnewlines特性。这允许python自动检测正在使用哪种新行。问题是不同平台的换行方式不同。在

你可能想知道为什么你会有奇怪的新词。你可以很容易地解决这个问题,但它可能会回来,并成为一个痛苦的稍后。在

相关问题 更多 >