Python:使用列表列表读取CSV文件的字段

标签 python list csv

我只是想知道如何从具有下一个结构的 CVS 文件中读取特殊字段:

40.0070222,116.2968604,2008-10-28,[["route"], ["sublocality","political"]]
39.9759505,116.3272935,2008-10-29,[["route"], ["establishment"], ["sublocality", "political"]]

我过去使用的阅读 cvs 文件的方式:

with open('routes/stayedStoppoints', 'rb') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=',', quotechar='"')

问题是我可以使用的前 3 个字段没问题:

for row in spamreader:

row[0],row[1],row[2] 我可以毫无问题地访问。但在最后一个字段中,我猜 csv.reader(csvfile, delimiter=',', quotechar='"') 也为每个子列表拆分:

所以当我尝试访问时,请告诉我:

[["route"] 

任何人都有处理最后一个字段的解决方案有一个完整的列表(确实是列表的列表)

[["route"], ["sublocality","political"]]

为了可以访问每个类别。

谢谢

最佳答案

你的格式接近json。您只需要将每一行括在方括号中,并引用日期。 对于每一行 l 只做:

lst=json.loads(re.sub('([0-9]+-[0-9]+-[0-9]+)',r'"\1"','[%s]'%(l)))

导致 lst 成为

[40.0070222, 116.2968604, u'2008-10-28', [[u'route'], [u'sublocality', u'political']]]

需要导入json解析器和正则表达式

import json
import re

edit:您询问了如何访问包含“route”的元素。答案是

lst[3][0][0]

'政治'在

lst[3][1][1]

如果字符串('political' 和其他)可能包含看起来像日期的字符串,您应该使用@unutbu 的解决方案

关于Python:使用列表列表读取CSV文件的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17136199/

相关文章:

python3 的 csv.DictReader 没有按预期按分隔符拆分记录

PHP 加载不带文件名的 CSV

python - Pandas DataFrame 中索引和列的级别数(深度)

python - 空列表、元组、字典如何分配内存?

android - 从手机的内部存储器+外部SD卡存储器中获取所有图像?

r - 在 r 中将列表列表合并为一个列表

python - 连接 CSV 或表格

python - 在 Django 模板中按索引引用列表项?

python - 在 Geopandas/Shapely 中识别独特的多边形分组

python - 如何在python中读取格式化输入?