[英]Breaking single line data to multi-line data
处理项目,我给出了原始日志数据并需要将其解析为可读状态,知道使用python来中断所有未成功的部分,然后留下需要拆分和格式化的原始数据,但是无法弄清楚如果他们将多条记录放在同一行上,这是一种将其分开的方法,这种情况并不总是会发生。
这是我到目前为止得到的字符串值。
* 190205 * 12,6000,0000000,12,6000,0000000,13,2590,0000000,13,7000,0000000,13,7000,0000000,13,2590,0000000,13,7000,0000000,13,7000,0000000 * 190206 * 01,2050,0100550,01,4999,0000000 ,,
我需要将它分开,以便每一行都以数字值开头,但是因为我可以假设只有1或2个我不能想到这样做的方法,以及之后的其他逗号分隔值的数量它变化,所以我不能长度。 这是我想要使用的将进一步操作上述示例中的数据。
* 190205 * 12,6000,0000000,12,6000,0000000,13,2590,0000000,13,7000,0000000,13,7000,0000000,13,2590,0000000,13,7000,0000000,13,7000,0000000
* 190206 * 01,2050,0100550,01,4999,0000000 ,,
txt = "*190205*12,6000,0000000,12,6000,0000000,13,2590,0000000,13,7000,0000000,13,7000,0000000,13,2590,0000000,13,7000,0000000,13,7000,0000000*190206*01,2050,0100550,01,4999,0000000,,"
output = list()
i = 0
x = txt.split("*")
while i < len(x):
if len(x[i]) == 0:
i += 1
continue
print ("*{0}*{1}".format(x[i],x[i+1]))
output.append("*{0}*{1}".format(x[i],x[i+1]))
i += 2
你可以使用正则表达式:
([*][0-9]*[*])
您可以使用此捕获标题部分,然后根据它进行拆分。
与@mujiga相同的答案,但我虽然dict可能更适合进一步的操作
txt = "*190205*12,6000,0000000,12,6000,0000000,13,2590,0000000,13,7000,0000000,13,7000,0000000,13,2590,0000000,13,7000,0000000,13,7000,0000000*190206*01,2050,0100550,01,4999,0000000,,"
datadict=dict()
i=0
x=txt.split("*")
while i < len(x):
if len(x[i]) == 0:
i += 1
continue
datadict[x[i]]=x[i+1]
i += 2
除了@Ali Nuri Seker提出的使用正则表达式的建议外,这是一个缺少环顾四周的简单方法(在这种情况下,实际上可能会造成伤害)
>>> import re
>>> string = '''*190205*12,6000,0000000,12,6000,0000000,13,2590,0000000,13,7000,0000000,13,7000,0000000,13,2590,0000000,13,7000,0000000,13,7000,0000000*190206*01,2050,0100550,01,4999,0000000,,'''
>>> print(re.sub(r'([\*][0-9,]+[\*]+[0-9,]+)', r'\n\1', string))
#Output
*190205*12,6000,0000000,12,6000,0000000,13,2590,0000000,13,7000,0000000,13,7000,0000000,13,2590,0000000,13,7000,0000000,13,7000,0000000
*190206*01,2050,0100550,01,4999,0000000,,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.