Python 在一行中查找图案,并在括号中打印以下值

Python 在一行中查找图案,并在括号中打印以下值,python,Python,我正试图从文件中提取一些信息。该文件有许多行,如下所示 "names":["DNSCR"],"actual_names":["RADIO_R"],"castime":[2,4,6,8,10] ...... 我想在每行中搜索名称和castime,如果找到,我想打印括号中的值 括号中的值在不同的行中变化。例如,在上面的行中,名称是DNSCR,casttime是2,3,6,8。但长度可能 下一行不一样 我尝试了以下代码,但它总是给我10个字符,但我只需要括号中的任何东西 c_req = 1

我正试图从文件中提取一些信息。该文件有许多行,如下所示

"names":["DNSCR"],"actual_names":["RADIO_R"],"castime":[2,4,6,8,10] ......     
我想在每行中搜索名称和castime,如果找到,我想打印括号中的值 括号中的值在不同的行中变化。例如,在上面的行中,名称是DNSCR,casttime是2,3,6,8。但长度可能 下一行不一样

我尝试了以下代码,但它总是给我10个字符,但我只需要括号中的任何东西

c_req = 10 
keyword = ['"names":','"castime":']

with open('mylogfile.log') as searchfile:
    for line in searchfile:
        for key in keywords:
            left,sep,right = line.partition(key)

            if sep: 

                    print key + " = " + (right[:c_req])

这看起来就像json,每一行都有括号吗? 如果是这样的话,那么整个内容都很容易解析:

import json
test = '{"names":["DNSCR"],"actual_names":["RADIO_R"],"castime":[2,4,6,8,10]}'
result = json.loads(test)   
print(result["names"], result["castime"])

如果整个文件与整个JSON文件匹配,您也可以使用pandas之类的库将整个文件读入数据帧。

这看起来就像JSON,每行是否有括号? 如果是这样的话,那么整个内容都很容易解析:

import json
test = '{"names":["DNSCR"],"actual_names":["RADIO_R"],"castime":[2,4,6,8,10]}'
result = json.loads(test)   
print(result["names"], result["castime"])

如果与整个JSON文件匹配,您还可以使用pandas之类的库将整个文件读入数据帧。

使用正则表达式:

import re

# should contain all lines
lines = ['"names":["DNSCR"],"actual_names":["RADIO_R"],"castime":[2,4,6,8,10]']

# more efficient in large files
names_pattern = re.compile('"names":\["(\w+)"\]')
castime_pattern = re.compile('"castime":\[(.+)\],?')

names, castimes = list(), list()

for line in lines:
    names.append(re.search(names_pattern, line).group(1))
    castimes.append(
        [int(num) for num in re.search(castime_pattern, line).group(1).split(',')]
    )

添加异常处理和文件打开/读取

使用正则表达式:

import re

# should contain all lines
lines = ['"names":["DNSCR"],"actual_names":["RADIO_R"],"castime":[2,4,6,8,10]']

# more efficient in large files
names_pattern = re.compile('"names":\["(\w+)"\]')
castime_pattern = re.compile('"castime":\[(.+)\],?')

names, castimes = list(), list()

for line in lines:
    names.append(re.search(names_pattern, line).group(1))
    castimes.append(
        [int(num) for num in re.search(castime_pattern, line).group(1).split(',')]
    )

添加异常处理和文件打开/读取给定
mylogfile.log

"names":["DNSCR"],"actual_names":["RADIO_R"],"castime":[2,4,6,8,10]
"names":["FOO", "BAR"],"actual_names":["RADIO_R"],"castime":[1, 2, 3]
使用正则表达式和

re.search(key+'\[(.*?\]),第行)。组(1)
将捕获
键之后
[]
之间的所有内容

ast.literal\u eval()
将转换并删除
字符串中的usless引号和空格,并在需要时自动创建
元组


我还使用了
enumerate
来跟踪它在日志文件中得到的行。

给定
mylogfile.log

"names":["DNSCR"],"actual_names":["RADIO_R"],"castime":[2,4,6,8,10]
"names":["FOO", "BAR"],"actual_names":["RADIO_R"],"castime":[1, 2, 3]
使用正则表达式和

re.search(key+'\[(.*?\]),第行)。组(1)
将捕获
键之后
[]
之间的所有内容

ast.literal\u eval()
将转换并删除
字符串中的usless引号和空格,并在需要时自动创建
元组


我还使用了
enumerate
来跟踪日志文件中的哪一行。

该文件是否包含不一致的引号(如您的示例所示)?该文件实际上具有一致的引号。my Side的副本错误文件是否包含不一致的引号(如您的示例中所示)?文件实际上具有一致的引号。从我身边抄错了没有每行都有括号。这些线条实际上很长,没有特定的图案,我在这里展示的是我感兴趣的东西。如果你能展示整个结构,这会有所帮助。不,每一条线条周围都没有括号。这些线条实际上很长,没有特定的图案,我在这里展示的是我感兴趣的东西。如果你能展示整个结构,这会有所帮助。