如何从一个文本文件中读取一个列表,该文件在python中正好位于某个文本的下方?

如何从一个文本文件中读取一个列表,该文件在python中正好位于某个文本的下方?,python,regex,Python,Regex,这是一个文本文件,我必须从中提取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 V

这是一个文本文件,我必须从中提取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>
回溯(最近一次呼叫最后一次):
文件“D:/com12.py”,第7行,在
打印(ast.literal\u eval(data.group()))
文件“C:\Users\2015s\AppData\Local\Programs\Python\Python36-32\lib\ast.py”,第85行,文本值
返回\u转换(节点\u或字符串)
文件“C:\Users\2015s\AppData\Local\Programs\Python\Python36-32\lib\ast.py”,第61行,in\u convert
返回列表(映射(_convert,node.elts))
文件“C:\Users\2015s\AppData\Local\Programs\Python\Python36-32\lib\ast.py”,第84行,in\u convert
raise VALUERROR('格式错误的节点或字符串:'+repr(节点))
ValueError:节点或字符串格式不正确:

原因是什么?

使用
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}]
输出:

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}]

你能发布Combined2345.txt的内容吗?下面是Combined2345.txt的链接