我有我应根据分隔符的特定模式分割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
但是,得到名单,这只能由数组中的第一个分隔符分割。
你接近。这个例子会做你的需要。
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)