如何在多行中使用正则表达式

时间:2014-10-15 12:43:41

标签: regex csv python-3.x

我有一个像这样的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模块,但我认为组更容易处理,因为有些线是纬度和经度位置。

我正在尝试searchfindallfinditer,但只返回第一行。

也许有关多线的事情,但我不明白。

1 个答案:

答案 0 :(得分:2)

如果您未指定任何标记,则默认情况下^匹配字符串的开头。

指定re.M flag(或re.MULTILINE)以匹配行的开头。

pat = re.compile(r'^....', flags=re.M)