您好我遇到了以下问题:
我将以下内容从列表/数组写入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']
答案 0 :(得分:0)
它正在按照你所说的去做:输出整行的字符串表示。行是列表,列表始终包含列表分隔符。
你完全不想要那样。你有一个元素,它已经是一个字符串;你应该抓住那个元素并附加它,而不是调用str
。
for row in reader:
your_list.append(row[0])
另请注意,您的原始写作功能非常非Pythonic。你永远不应该遍历len(range(something))
:非常丑陋应该告诉你,这不是做事的方式。相反,只需迭代这件事。
for item in text:
spamwriter.writerow([item])
最后,您可能会考虑这一点,因为您每行编写一个元素并将其读回,因此CSV可能不是合适的格式。简单的文本写入和读取会更容易。