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