每个分隔符蟒蛇的具体发生分裂线

问题描述 投票:1回答:1

我有我应根据分隔符的特定模式分割txt文件。

例如:

第一分割后应“”在同一行应为(或CHR(32))二分割“”(或CHR两次(32)),等等。

线下,我想分裂的例子:

'2018-12-14 23:54:53,105 WARN  system.equipment - Timed AC is: 110.375\n'

我发现模式,并根据它,我想要分割,并将其设置为ASCII作为数组。试图为迭代分裂,但没有成功。感谢大家对你的帮助和时间!

delim_array = []
delim_array = [chr(32),chr(32),[chr(32)+chr(32)],[chr(32)+chr(45)+chr(32)]]
for j in delim_array:
    part = re.split(j,datafile[1])    #datafile is my list to split
    print (part)

我想分裂列表中各部分之间的分隔符,是根据delim_array:

1)'2018-12-14

2)23:54:53,105

3)WARN

4)system.equipment

5)定时AC是:110.375

但是,得到名单,这只能由数组中的第一个分隔符分割。

python split delimiter
1个回答
0
投票

你接近。这个例子会做你的需要。

import re

dd = '2018-12-14 23:54:53,105 WARN  system.equipment - Timed AC is: 110.375\n'

delim_array = [chr(32),chr(32), chr(32)+chr(32), chr(32)+chr(45)+chr(32)]
part = []
for j in delim_array:
    ap, dd = re.split(j, dd, maxsplit=1)
    part.append(ap)    #datafile is my list to split

part.append(dd.strip())
print(part)

该打印:['2018-12-14', '23:54:53,105', 'WARN', 'system.equipment', 'Timed AC is: 110.375']

这里的关键部分使用re.split()与maxsplit等于1(here the docs),所以每次迭代你分成两个部分的线。第一部分是要附加到part列表,第二部分,你继续作进一步分裂的东西。所以reassing第二部分以相同的变量,其保持的字符串(在我的例子dd)。记得在循环后追加获得最后dd或将丢失(我也脱光这里的换行符)。

如果你有一个数据文件,你需要一个嵌套循环来做到这一点。当然,要确保所有的线路跟着您发布相同的格式,否则你可能会得到意想不到的结果。

import re

delim_array = [chr(32),chr(32), chr(32)+chr(32), chr(32)+chr(45)+chr(32)]
with open("your_file_name.txt") as datafile:
    for dd in datafile:
        part = []
        for j in delim_array:
            ap, dd = re.split(j, dd, maxsplit=1)
            part.append(ap)    #datafile is my list to split

        part.append(dd.strip())
        print(part)
© www.soinside.com 2019 - 2024. All rights reserved.