正在为我提供原始日志数据并需要将其解析为可读状态的项目,使用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 ,,
我需要将其分解,以便每行以 number 值开头,但是由于我可以假设其中只有一两个,所以我想不出一种解决方法,以及其他逗号分隔值的数量,在它改变之后,我就再也不能按篇幅了。这就是我要使用的内容,它将对上述示例中的数据进行进一步的操作。
* 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,
答案 0 :(得分:0)
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
答案 1 :(得分:0)
您可以使用正则表达式:
([*][0-9]*[*])
您可以以此捕获标题部分,然后根据其拆分。
答案 2 :(得分:0)
答案与@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
答案 3 :(得分:0)
在@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,,