[英]Parse text from a file to another file using python script
我有一个日志文件,我想编写一个python脚本以将信息从该日志解析到另一个.txt文件。 我对如何入门一无所知,因为我对python很陌生。 任何人都可以对我应该怎么做有所了解
我的日志文件包含:
06 May 19 03:40:35 3 abCodeClearTrap Error Clear Trap (agent: 12367a12, chassis:12367a12, ErrIdText: ERROR ID TEXT, csssi: EXTIFG, clearedID: 0x089088394)
06 May 19 03:44:35 3 abCodeErrorTrap Error Trap (agent: 12368a15, chassis: 12368a15, ErrIdText: Skip this item, csssi: SSRSSR, clearedID: 0x089088394)
假设用户要解析日期,时间,座席,清除和ErrIDText。 我将如何去做。 提前致谢
您问题的完整答案有点太多,但是我可以为您提供一些指导。 您应该阅读有关regex
,可以将其与python的re
模块一起使用。 因此,我只会从您的字符串中解析日期:
import re
string='06 May 19 03:40:35 3 abCodeClearTrap Error Clear Trap (agent: 12367a12, chassis:12367a12, ErrIdText: ERROR ID TEXT, csssi: EXTIFG, clearedID: 0x089088394)\n\
06 May 19 03:44:35 3 abCodeErrorTrap Error Trap (agent: 12368a15, chassis: 12368a15, ErrIdText: Skip this item, csssi: SSRSSR, clearedID: 0x089088394)'
split_error=string.split('\n')
dates=[]
for error in split_error:
date=re.match('\d{2} \w+ \d{2}', error).group(0)
dates.append(date)
您可以通过列表理解来更有效地执行此操作,但是,如果您不熟悉Python,最好使用可读性更高的代码。
我将错误的每一行分割成一个列表,然后搜索两个数字( '\\d{2}'
)的组合,一个空格( ),一个或多个单词字符(
'\\w+'
),一个空格( ),然后在每个字符串中添加两个数字(
'\\d{2}'
)并从中提取出来。 然后我将日期附加到dates
列表中。 您可以找到类似的模式来提取所需的大多数数据。
祝好运 !
编辑:如@Reedinationer所建议,在阅读了有关re
模块的知识后,一个很好的链接可以了解模式是regex备忘单 ,当我忘记如何做一些regex时,我总会去那里
这是一个粗糙的示例,您如何使用open()
打开日志文件,并使用re
模块和str.split()
解析其中的一些值:
import re
with open('myfile.log') as f:
lines = f.readlines()
data = []
for line in lines:
date = re.match(r'\d{2} \w+ \d{2}', line).group(0)
time = line.split()[3]
agent = re.search(r'agent:\s(.*?),', line).group(1)
errID = re.search(r'ErrIdText:\s(.*?),', line).group(1)
clear = re.search(r'clearedID:\s(.*?)\)', line).group(1)
row = [date, time, agent, errID, clear]
data.append(row)
for row in data:
print(row)
输出:
['06 May 19', '03:40:35', '12367a12', 'ERROR ID TEXT', '0x089088394'] ['06 May 19', '03:44:35', '12368a15', 'Skip this item', '0x089088394']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.