python - 如何在 Python 中解析具有更改索引的动态行的 txt 文件
问题描述
我是 Python 新手。需要解析带有动态变量(更改索引)的文本文件。
我有以下文本文件
packet1_ref_time = 13.64
packet2_ref_time = 73.68
16.11.2018 16:33:03 {Step 1 passed successfully!}
16.11.2018 16:33:06 {}
packet1_ref_time = 17.25
packet2_ref_time = 71.112
16.11.2018 16:33:03 {Step 2 Failed!}
16.11.2018 16:33:06 {}
packet1_ref_time = 13.877
packet2_ref_time = 78.366
16.11.2018 16:33:03 {Step 3 passed successfully!}
16.11.2018 16:33:06 {}
我的最终输出\另一个文本文件应该是:测试1通过测试2失败测试3通过
def main():
file = open("Console_log_28-12-2018_02-31-55.txt","r")
lines = file.readlines()
file.close()
for line in lines:
line=line.strip()
index = 1
str (index)
#if line == "Step"index"passed successfully!":
if line.find("Step 1 passed successfully!") != -1:
print ( line )
main()
结果如预期的那样是“28.12.2018 02:36:16 {步骤 1 成功通过!}”。它很明显,因为我正在搜索一个确切的步骤(在这种情况下为第 1 步)以及我需要它来搜索动态索引,就像我在评论中所写的那样:#if line == "Step"index"passed成功地!”:
但是我就是找不到关于如何编码的正确语法。
解决方案
对于查找行,您可以使用正则表达式,即re
模块
for line in lines:
if bool(re.search('Step [0-9]+ (passed successfully)|(Failed)!',line)):
print(line)
[0-9]+
表示任何自然数,而在这种情况下|
表示或 或。re
passed succsssfully
Failed
编辑:重新考虑您的问题后,我得出的结论re.findall
会更好,请参见下面的示例
text = '''better in this case
packet1_ref_time = 13.64
packet2_ref_time = 73.68
16.11.2018 16:33:03 {Step 1 passed successfully!}
16.11.2018 16:33:06 {}
packet1_ref_time = 17.25
packet2_ref_time = 71.112
16.11.2018 16:33:03 {Step 2 Failed!}
16.11.2018 16:33:06 {}
packet1_ref_time = 13.877
packet2_ref_time = 78.366
16.11.2018 16:33:03 {Step 3 passed successfully!}
16.11.2018 16:33:06 {}'''
tests = re.findall('Step [0-9]+ passed|Step [0-9]+ Failed',text)
print(tests)
输出:
['Step 1 passed', 'Step 2 Failed', 'Step 3 passed']
请注意,为清楚起见,我只是将字符串分配给text
. 您应该将返回的值分配.read()
给您的变量。
推荐阅读
- html - Angular Flex 不能将项目放在同一行,Angular 8.2.1 和 Flex-Layout 8.0.0.beta 26
- javascript - 反应:无法通过将函数传递给更新它的子组件来更新父状态
- android - 如何修复屏幕锁定后Android MediaPlayer自动关闭
- python - 从python中的daraframe创建数据框列表
- c# - 通过 Wifi Lan 连接将数据从 Desktop Sqlite DB 检索到 android 应用程序
- c++ - 循环动态数组重新分配(通过`new`构造函数)导致`segmentation fault`-malloc错误
- amazon-web-services - AWS 或 Azure 上 SQL+Web App+SSIS+SSRS 的最佳解决方案是什么
- c# - 具有不同命令和反馈单元/类型的 PID(比例-积分-微分控制器)回路
- algorithm - 优化自定义数据编码的比特浪费
- javascript - 网页在几分钟后变得无响应并崩溃