Here is my code
def ExtractTimeAndFrequency():
for line in ft.split('\r\n'):
if 'cpu7' in line:
tm = re.findall(r"([0-2][0-9]:[0-5][0-9]:[0-5][0-9])", line)
fr= re.findall(r"\d{7}", line)
return fr, tm
文件内容在这里:
15:23:48 cpu0 1708800
15:23:48 cpu1 1708801
15:23:48 cpu2 1708802
15:23:48 cpu3 1708803
15:23:48 cpu4 1708804
15:23:49 cpu5 1708805
15:23:49 cpu6 2208006
15:23:49 cpu7 2208007
15:23:49 Temp 326
15:23:52 cpu0 1708808
15:23:52 cpu1 1708809
15:23:52 cpu2 1708810
15:23:52 cpu3 1708811
15:23:52 cpu4 1708812
15:23:52 cpu5 1708813
15:23:52 cpu6 2208014
15:23:52 cpu7 2208015
15:23:53 Temp 327
我应该只获取那些针对cpu7的匹配项,但我正在获取所有从cpu0到cpu7的匹配项
with open
进行文件处理(您未在代码中显示正在执行的操作)。然后,您可以为fr
和tm
的每个附加值扩展列表。使用扩展,因为每次迭代只会生成一个具有单个值的列表,并且您可能不希望过度写入而仅以最后一个值结束。基于您的测试数据,您正在寻找类似的东西吗?
import re
def ExtractCpuAndFrequency():
with open('../testData/so1.txt') as text_file:
for line in text_file:
if 'cpu7' in line:
tm.extend(re.findall(r"([0-2][0-9]:[0-5][0-9]:[0-5][0-9])", line))
fr.extend(re.findall(r"\d{7}", line))
return fr, tm
tm = []
fr = []
result_fr, result_tm = ExtractCpuAndFrequency()
print(f'Result fr is {result_fr}')
print(f'Result tm is {result_tm}')
[具有“ cpu7”的行中的两个值的结果:
Result fr is ['2208007', '2208015'] Result tm is ['15:23:49', '15:23:52']