我只是想知道如何从具有下一个结构的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.您只需将每一行括在括号中,并引用日期.
对于每一行我只做:
lst=json.loads(re.sub('([0-9]+-[0-9]+-[0-9]+)',r'"\1"','[%s]'%(l)))
结果是
[40.0070222, 116.2968604, u'2008-10-28', [[u'route'], [u'sublocality', u'political']]]
您需要导入json解析器和正则表达式
import json
import re
编辑:您询问了如何访问包含’route’的元素.答案是
lst[3][0][0]
‘政治’在
lst[3][1][1]
如果字符串(‘political’和其他字符串)可能包含类似日期的字符串,则应该使用@unutbu的解决方案
标签:python,csv,list
来源: https://codeday.me/bug/20190529/1177909.html