从Array写入和读取内容到csv

时间:2015-08-18 14:45:14

标签: python csv

您好我遇到了以下问题:

我将以下内容从列表/数组写入CSV文件:

18 Aug 2015 12:00:08 AM CESTFrankfurtFRA:New Instruments available on XETRA - 1
18 Aug 2015 12:00:07 AM CESTFrankfurtFRA:Deletion of Instruments from XETRA - 1
18 Aug 2015 12:00:06 AM CESTFrankfurtFRA:New Instruments available on XETRA - 1
18 Aug 2015 12:00:05 AM CESTFrankfurtDIVIDEND/INTEREST INFORMATION --   4`

具有以下功能

def _writeInCSV(text):
    #print "Writing in CSV File"
    with open('eggs.csv', 'wb') as csvfile:
        #spamwriter = csv.writer(csvfile, delimiter='\t',quotechar='\n', quoting=csv.QUOTE_MINIMAL)
        spamwriter = csv.writer(csvfile, delimiter='\t',quotechar="\n")
        for n in range(len(text)):
            spamwriter.writerow([text[n]])

现在我想将CSV文件中的内容读入数组,并且每个项目都会得到“[]”。所以输出看起来像这样:

["['18 Aug 2015 12:00:08 AM CESTFrankfurtFRA:New Instruments available on XETRA - 18.08.2015-002']", "['18 Aug 2015 12:00:07 AM CESTFrankfurtFRA:Deletion of Instruments from XETRA - 18.08.2015-001']"]

为了阅读CSV,我使用以下代码/功能:

def _readInCSV(your_list):

    with open('eggs.csv', 'rb') as f:
        reader = csv.reader(f)
        for row in reader:
            your_list.append(str(row))

问题在于我试图将这些元素作为字符串在开头和结尾处没有“[]”。

所以我想要一个像这样的输出:

['18 Aug 2015 12:00:08 AM CESTFrankfurtFRA:New Instruments available on XETRA - 18.08.2015-002', '18 Aug 2015 12:00:07 AM CESTFrankfurtFRA:Deletion of Instruments from XETRA - 18.08.2015-001']

1 个答案:

答案 0 :(得分:0)

它正在按照你所说的去做:输出整行的字符串表示。行是列表,列表始终包含列表分隔符。

你完全不想要那样。你有一个元素,它已经是一个字符串;你应该抓住那个元素并附加它,而不是调用str

for row in reader:
    your_list.append(row[0])

另请注意,您的原始写作功能非常非Pythonic。你永远不应该遍历len(range(something)):非常丑陋应该告诉你,这不是做事的方式。相反,只需迭代这件事。

for item in text:
    spamwriter.writerow([item])

最后,您可能会考虑这一点,因为您每行编写一个元素并将其读回,因此CSV可能不是合适的格式。简单的文本写入和读取会更容易。