python - 解析列中包含列表的 CSV

标签 python python-2.7 parsing csv import-from-csv

我有一个通过 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/

相关文章:

python - BeautifulSoup 错误地解析页面并且找不到链接

Python+解析自定义配置文件

parsing - 为什么左递归、非确定性或二义性文法不能是 LL(1)?

python - 带有 paramiko 的 ssh 客户端

python - 将列表随机划分为两个互补的子列表

python - 在 python eve 应用程序中执行 PUT、PATCH 返回,请求的 URL 不允许该方法

c - 源到源操作

python - python中不区分大小写的字符串类

python - 按地址获取 'erc-20' 交易的列表

python - 为什么 json python 程序总是出现错误