python - 如何从文本文件中读取列表,该文件位于python中某些文本的下方?
问题描述
这是一个文本文件,我必须从中提取 python 列表(从 [{"WW":"WW18" ... ... 开始),然后他们在该列表上执行一些操作。这个怎么做?
Verified Title Successfully
6
Title of the graph Firmware Trend Status - AB - WW24.7
Title of the graph with categoryFirmware Trend Status - AB - WW24.7
###########Firmware Weekly Status Value############
[{"WW":"WW18","Pass":0,"Fail":8,"Notrun":47,"Notready":0,"total":45,"passPerc":0,"runPerc":15},{"WW":"WW19","Pass":0,"Fail":8,"Notrun":47,"Notready":0,"total":25,"passPerc":0,"runPerc":15},{"WW":"WW20","Pass":0,"Fail":8,"Notrun":47,"Notready":0,"total":35,"passPerc":0,"runPerc":15},{"WW":"WW21","Pass":0,"Fail":8,"Notrun":47,"Notready":0,"total":45,"passPerc":0,"runPerc":15},{"WW":"WW22","Pass":0,"Fail":8,"Notrun":47,"Notready":0,"total":55,"passPerc":0,"runPerc":15},{"WW":"WW23","Pass":0,"Fail":8,"Notrun":47,"Notready":0,"total":75,"passPerc":0,"runPerc":15},{"WW":"WW24","Pass":0,"Fail":8,"Notrun":47,"Notready":0,"total":65,"passPerc":0,"runPerc":15},{"WW":"WW25","Pass":0,"Fail":0,"Notrun":0,"Notready":0,"total":0,"passPerc":0,"runPerc":0},{"WW":"WW26","Pass":0,"Fail":0,"Notrun":0,"Notready":0,"total":0,"passPerc":0,"runPerc":0},{"WW":"WW27","Pass":0,"Fail":0,"Notrun":0,"Notready":0,"total":0,"passPerc":0,"runPerc":0},{"WW":"WW28","Pass":0,"Fail":0,"Notrun":0,"Notready":0,"total":0,"passPerc":0,"runPerc":0},{"WW":"WW29","Pass":0,"Fail":0,"Notrun":0,"Notready":0,"total":0,"passPerc":0,"runPerc":0},{"WW":"WW30","Pass":0,"Fail":0,"Notrun":0,"Notready":0,"total":0,"passPerc":0,"runPerc":0}]
编辑:我尝试了以下代码:
import re
import ast
fo=open(r"D:\Combined2345.txt","r")
s=fo.read()
data = re.search("\[.*?\]", s)
if data:
print( ast.literal_eval(data.group()))
但它显示错误:
Traceback (most recent call last):
File "D:/com12.py", line 7, in <module>
print( ast.literal_eval(data.group()))
File "C:\Users\2015s\AppData\Local\Programs\Python\Python36-32\lib\ast.py", line 85, in literal_eval
return _convert(node_or_string)
File "C:\Users\2015s\AppData\Local\Programs\Python\Python36-32\lib\ast.py", line 61, in _convert
return list(map(_convert, node.elts))
File "C:\Users\2015s\AppData\Local\Programs\Python\Python36-32\lib\ast.py", line 84, in _convert
raise ValueError('malformed node or string: ' + repr(node))
ValueError: malformed node or string: <_ast.Name object at 0x07C9D230>
是什么原因?
解决方案
使用regex
和ast
模块。
演示:
import re
import ast
s = """Verified Title Successfully
6
Title of the graph Firmware Trend Status - AB - WW24.7
Title of the graph with categoryFirmware Trend Status - AB - WW24.7
###########Firmware Weekly Status Value############
[{"WW":"WW18","Pass":0,"Fail":8,"Notrun":47,"Notready":0,"total":45,"passPerc":0,"runPerc":15},{"WW":"WW19","Pass":0,"Fail":8,"Notrun":47,"Notready":0,"total":25,"passPerc":0,"runPerc":15},{"WW":"WW20","Pass":0,"Fail":8,"Notrun":47,"Notready":0,"total":35,"passPerc":0,"runPerc":15},{"WW":"WW21","Pass":0,"Fail":8,"Notrun":47,"Notready":0,"total":45,"passPerc":0,"runPerc":15},{"WW":"WW22","Pass":0,"Fail":8,"Notrun":47,"Notready":0,"total":55,"passPerc":0,"runPerc":15},{"WW":"WW23","Pass":0,"Fail":8,"Notrun":47,"Notready":0,"total":75,"passPerc":0,"runPerc":15},{"WW":"WW24","Pass":0,"Fail":8,"Notrun":47,"Notready":0,"total":65,"passPerc":0,"runPerc":15},{"WW":"WW25","Pass":0,"Fail":0,"Notrun":0,"Notready":0,"total":0,"passPerc":0,"runPerc":0},{"WW":"WW26","Pass":0,"Fail":0,"Notrun":0,"Notready":0,"total":0,"passPerc":0,"runPerc":0},{"WW":"WW27","Pass":0,"Fail":0,"Notrun":0,"Notready":0,"total":0,"passPerc":0,"runPerc":0},{"WW":"WW28","Pass":0,"Fail":0,"Notrun":0,"Notready":0,"total":0,"passPerc":0,"runPerc":0},{"WW":"WW29","Pass":0,"Fail":0,"Notrun":0,"Notready":0,"total":0,"passPerc":0,"runPerc":0},{"WW":"WW30","Pass":0,"Fail":0,"Notrun":0,"Notready":0,"total":0,"passPerc":0,"runPerc":0}]
"""
data = re.search("\[.*?\]", s) #Get content between []
if data:
print( ast.literal_eval(data.group())) #Convert string to list object.
输出:
[{'runPerc': 15, 'Notready': 0, 'WW': 'WW18', 'passPerc': 0, 'Pass': 0, 'Fail': 8, 'total': 45, 'Notrun': 47}, {'runPerc': 15, 'Notready': 0, 'WW': 'WW19', 'passPerc': 0, 'Pass': 0, 'Fail': 8, 'total': 25, 'Notrun': 47}, {'runPerc': 15, 'Notready': 0, 'WW': 'WW20', 'passPerc': 0, 'Pass': 0, 'Fail': 8, 'total': 35, 'Notrun': 47}, {'runPerc': 15, 'Notready': 0, 'WW': 'WW21', 'passPerc': 0, 'Pass': 0, 'Fail': 8, 'total': 45, 'Notrun': 47}, {'runPerc': 15, 'Notready': 0, 'WW': 'WW22', 'passPerc': 0, 'Pass': 0, 'Fail': 8, 'total': 55, 'Notrun': 47}, {'runPerc': 15, 'Notready': 0, 'WW': 'WW23', 'passPerc': 0, 'Pass': 0, 'Fail': 8, 'total': 75, 'Notrun': 47}, {'runPerc': 15, 'Notready': 0, 'WW': 'WW24', 'passPerc': 0, 'Pass': 0, 'Fail': 8, 'total': 65, 'Notrun': 47}, {'runPerc': 0, 'Notready': 0, 'WW': 'WW25', 'passPerc': 0, 'Pass': 0, 'Fail': 0, 'total': 0, 'Notrun': 0}, {'runPerc': 0, 'Notready': 0, 'WW': 'WW26', 'passPerc': 0, 'Pass': 0, 'Fail': 0, 'total': 0, 'Notrun': 0}, {'runPerc': 0, 'Notready': 0, 'WW': 'WW27', 'passPerc': 0, 'Pass': 0, 'Fail': 0, 'total': 0, 'Notrun': 0}, {'runPerc': 0, 'Notready': 0, 'WW': 'WW28', 'passPerc': 0, 'Pass': 0, 'Fail': 0, 'total': 0, 'Notrun': 0}, {'runPerc': 0, 'Notready': 0, 'WW': 'WW29', 'passPerc': 0, 'Pass': 0, 'Fail': 0, 'total': 0, 'Notrun': 0}, {'runPerc': 0, 'Notready': 0, 'WW': 'WW30', 'passPerc': 0, 'Pass': 0, 'Fail': 0, 'total': 0, 'Notrun': 0}]
推荐阅读
- ios - 当我使用主机应用程序(使用 cocoapods)对我的 SDK 进行单元测试时出现这两个错误
- verilog - 在verilog中获取语法错误
- laravel - Laravel 7:禁用登录和自动登录(remember_token)
- oracle - Terraform OCI - 为尚未创建的组创建策略
- python - 有没有办法将今天的日期和“file-2”添加到 csv 中的每一行?
- javascript - VueJS - 如何自定义 vue-slider-component 的滑块栏?
- javascript - Javascript 不适用于使用 jquery .append() 方法创建的元素
- angular - 第二次代码更改后 ng serve 崩溃
- html - div的绝对定位,同时保持页面布局
- javascript - 如果 Image url 在 react native 中出现 404 错误,我该如何使用默认图像?