繁体   English   中英

使用python脚本将文本从文件解析到另一个文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM