Python正则表达式将字符串拆分为5个部分

时间:2013-10-21 16:54:48

标签: python regex string split

我正在玩Python,我遇到了一个问题。 我有一个大型数据文件,其中每个字符串的结构如下:

"id";"userid";"userstat";"message";"2013-10-19 06:33:20 (date)"

我需要将每行分成5个部分,分号是分隔符。但同时在报价范围内。

很难解释,所以我希望你理解我的意思。

3 个答案:

答案 0 :(得分:4)

该格式看起来很像ssv:分号分隔(如“csv”,但用分号代替逗号)。我们可以使用csv模块来处理这个问题:

import csv

with open("yourfile.txt", "rb") as infile:
    reader = csv.reader(infile, delimiter=";")
    for row in reader:
        print row

产生

['id', 'userid', 'userstat', 'message', '2013-10-19 06:33:20 (date)']

此方法的一个优点是它可以自动正确处理引用数据中的分号。

答案 1 :(得分:3)

使用str.split,不需要正则表达式:

>>> strs = '"id";"userid";"userstat";"message";"2013-10-19 06:33:20 (date)"'
>>> strs.split(';')
['"id"', '"userid"', '"userstat"', '"message"', '"2013-10-19 06:33:20 (date)"']

如果你不想要双引号,那么:

>>> [x.strip('"') for x in strs.split(';')]
['id', 'userid', 'userstat', 'message', '2013-10-19 06:33:20 (date)']

答案 2 :(得分:0)

在你的情况下你可以按";"分割,也可以考虑使用正则表达式,如^("[^"]+");("[^"]+");("[^"]+");("[^"]+");("[^"]+")$