我有一个通过 csv.writer
生成的 CSV 文件目的。以下是生成文件的代码的简化版本:
output = open('out.txt', 'ab+')
writer = csv.writer(output, dialect='excel')
for item in dataset:
row = []
row.append(item['id'])
row.append(item['timestamp'])
values = []
for value in item['values']
values.append(value['name'])
row.append(values)
writer.writerow(row)
output.flush()
output.close()
CSV 文件中的示例行如下所示:
457458856894140182,Mon Dec 02 11:36:48 +0000 2013,[u'Sugar', u'Rice', u'Bleach']
我尝试过使用 csv.reader
对象将数据解析回另一个脚本,但无法正确解析第三列中的列表。 Python 只是将整个值 [u'Sugar', u'Rice', u'Bleach']
视为字符串。例如代码:
input = open('out.txt', 'rb')
reader = csv.reader(input, dialect='excel')
for row in reader:
print row[2][0]
input.close()
...仅在换行符上输出一长串 [
。
如何正确解析此 CSV 文件,将第三列中的结构组装回内存中的列表?
最佳答案
从字符串[it'Sugar', Rice', u Bleach']
中,您可以使用ast.literal_eval
获取相应的list
对象>:
>>> a="[u'Sugar', u'Rice', u'Bleach']"
>>> import ast
>>> ast.literal_eval(a)
[u'Sugar', u'Rice', u'Bleach']
>>> ast.literal_eval(a)[1]
u'Rice'
>>>
关于python - 解析列中包含列表的 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20444762/