如何为一个表达式编写正则表达式?

2024-09-29 23:33:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一个文件中提取所有以info clockdritf [syncCLK_predict]: predict_part_corr开头的句子 我只想展示这句话中的所有值:

info clockdritf [syncCLK_predict]: predict_part_corr -1
info clockdritf [syncCLK_predict]: predict_part_corr  5
info clockdritf [syncCLK_predict]: predict_part_corr  8
info clockdritf [syncCLK_predict]: predict_part_corr -7
info clockdritf [syncCLK_predict]: predict_part_corr 15

这是我的函数,但我没有给出任何结果:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('ggplot')
from collections import OrderedDict
from pylab import *
import csv
import matplotlib.pyplot as plt
plt.style.use('ggplot')
import seaborn as sns
sns.set_style('whitegrid')

#info clockdritf [syncCLK_predict]: predict_part_correction -1

try:
    import uncertainties.unumpy as unp
    import uncertainties as unc
except:
    import pip

    pip.main(['install', 'uncertainties'])
    import uncertainties.unumpy as unp
    import uncertainties as unc

Synchronization_Signals_Counter= OrderedDict ({
    'clkpredict':r'info\sclockdritf\s[syncCLK_predict]:\spredict_part_corr\s+([0-9]+)'
})

def Extract_List_Data_Info_Based_On_Regular_Expression(Log_File, re_key):
    # print(re_key)
    re_value = Synchronization_Signals_Counter[re_key]
    fsrc = open(Log_File, 'r')
    buff = fsrc.read()
    list_info = re.findall(re_value, buff)
    print(list_info)
    list_info[0]= ('clkpredict')
    return(list_info)

if __name__ == '__main__':
    Log_File='/home/ptl/Simulations/Results.log'

    for re_key in Synchronization_Signals_Counter.keys():
        print(re_key)
        list_info=Extract_List_Data_Info_Based_On_Regular_Expression(Log_File, re_key)
        print(list_info)

所得结果:

clkpredict
[]
list_info[0]= ('clkpredict')
IndexError: list assignment index out of range

Tags: keyimportreinfologaspltpredict
2条回答

不使用正则表达式,您可以使用rsplit()方法将字符串拆分为列表,从右侧开始:

values = []
with open("log.txt") as f:
    for line in f.readlines():
        values.append(int(line.rstrip().rsplit(" ", 1)[1]))
[int(line.split("info clockdritf [syncCLK_predict]: predict_part_corr")[-1]) for line in open("_your_file_path_here_", 'r').readlines()]

相关问题 更多 >

    热门问题