我正在玩Python,我遇到了一个问题。 我有一个大型数据文件,其中每个字符串的结构如下:
"id";"userid";"userstat";"message";"2013-10-19 06:33:20 (date)"
我需要将每行分成5个部分,分号是分隔符。但同时在报价范围内。
很难解释,所以我希望你理解我的意思。
答案 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)
在你的情况下你可以按";"
分割,也可以考虑使用正则表达式,如^("[^"]+");("[^"]+");("[^"]+");("[^"]+");("[^"]+")$