将单行数据分解为多行数据

时间:2019-03-14 15:58:29

标签: python list split

正在为我提供原始日志数据并需要将其解析为可读状态的项目,使用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,

4 个答案:

答案 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
  • 使用split分隔**之间的单词
  • 打印两个本构标记

答案 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,,