我有一个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)警告
4)system.equipment
5)定时交流为:110.375
但是获取列表,它仅由数组中的第一个定界符分割。
答案 0 :(得分: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
列表中的内容,第二部分是您保留以进行进一步拆分的内容。因此,将第二部分重新设置为包含字符串的变量(在我的示例中为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)