在python中用分号分隔文本

时间:2016-11-12 11:40:55

标签: python text

我有一个这种格式的文本文件:

subscriber=admin lname="adamec22a" password="kofola1224" first-name="Anton net na M.lehote,zapajal si to sam!!" last-name="Adamec 1.3.2012 skoncil zmluvu" phone="00421917499086" location="NB, Sturova 18, 2pos." rate-limit=" 1M/3M" last-seen=never

我需要在Python中做的是,行中的每个记录应该用分号分隔,如果没有记录(如名字或其他记录),脚本应该在两个之间留一个空格分号。

1 个答案:

答案 0 :(得分:0)

假设输入行格式一致,并且我理解您要求的内容,您可以按照此处指示的方式恢复数据。然后你可以用任何适合你的方式输出它。

>>> pieces = '''subscriber=admin lname="adamec22a" password="kofola1224" first-name="Anton net na M.lehote,zapajal si to sam!!" last-name="Adamec 1.3.2012 skoncil zmluvu" phone="00421917499086" location="NB, Sturova 18, 2pos." rate-limit=" 1M/3M" last-seen=never'''.split('=')
>>> fieldNames = [ pieces[0] ]
>>> for i in range(1, -1+len(pieces)):
...     fieldNames.append(pieces[i][1+pieces[i].rfind(' '):])
... 
>>> fieldNames
['subscriber', 'lname', 'password', 'first-name', 'last-name', 'phone', 'location', 'rate-limit', 'last-seen']
>>> fieldValues = [ pieces[-1]]
>>> for i in range(-2+len(pieces),0,-1):
...     fieldValues.append(pieces[i][:pieces[i].rfind(' ')])
... 
>>> fieldValues.reverse()
>>> fieldValues
['admin', '"adamec22a"', '"kofola1224"', '"Anton net na M.lehote,zapajal si to sam!!"', '"Adamec 1.3.2012 skoncil zmluvu"', '"00421917499086"', '"NB, Sturova 18, 2pos."', '" 1M/3M"', 'never']
>>> for fieldName, fieldValue in zip(fieldNames, fieldValues):
...     fieldName, fieldValue
...     
('subscriber', 'admin')
('lname', '"adamec22a"')
('password', '"kofola1224"')
('first-name', '"Anton net na M.lehote,zapajal si to sam!!"')
('last-name', '"Adamec 1.3.2012 skoncil zmluvu"')
('phone', '"00421917499086"')
('location', '"NB, Sturova 18, 2pos."')
('rate-limit', '" 1M/3M"')
('last-seen', 'never')