【发布时间】:2014-10-15 12:43:41
【问题描述】:
我有一个这样的 csv 文件:
XXXX,YYYYY,41.29942,2.19939,2013-05-21T10:22:35+0000
XXXX,YYYYY,41.2679,2.08318,2013-05-21T10:42:25+0000
XXXX,YYYYY,41.23117,1.99121,2013-05-21T11:03:39+0000
XXXX,YYYYY,41.15553,1.93085,2013-05-21T11:27:40+0000
我正在使用以下脚本
import re
ruta = 'C:\filename.csv'
with open(ruta,'r') as fh:
lector = fh.read()
pat = re.compile(r'^(XXXX,YYYYY,([0-9]{0,2}.[0-9]{0,7}),(-?)([0-9]{0,2}.[0-9]{0,7})),([0-9]{0,4}-[0-9]{0,2}-[0-9]{0,2}.[0-9]{0,2})T([0-9]{0,2}:[0-9]{0,2}:[0-9]{0,2})(\+0000)\n')
res = re.findall(pat,lector)
print(res)
但只要找到第一组。 我知道我可以使用 csv 模块,但我认为按组处理更容易,因为有些行是纬度和经度位置。
我正在尝试search、findall 和finditer,但只返回第一行。
也许是关于多行的,但我无法理解。
【问题讨论】:
-
您要求日期的日期部分以
.结尾,并且是可选的 1 位或 2 位数字。您在T之前的模式中使用了.[0-9]{0,2}。 -
真的,正则表达式不是这里使用的工具。只需使用
csv模块。
标签: regex csv python-3.x