我有一个通过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文件,以便将第三列中的结构汇编回内存中的列表?
答案 0 :(得分:1)
从字符串[u'Sugar', u'Rice', u'Bleach']
,您可以使用list
获取相应的ast.literal_eval
对象:
>>> 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'
>>>