在python中从文本文件行收集数据
我正在尝试从.txt文件中获取值。例如: 127.0.0.1次尝试的答案=1次=1s id=1 127.0.0.1次尝试的答案=1次=2s id=1 127.0.0.1次尝试的答案=1次=15s id=1 127.0.0.1次尝试的答案=1次=12s id=1 127.0.0.1次尝试的答案=1次=4s id=1 我想从每一行中累积所有“Time=xs”字,并尽可能将它们保存到变量(列表、数组等)中。我已经可以访问.txt文件,并尝试将其拆分以分别获取行,但结果似乎无法获得它们在python中从文本文件行收集数据,python,Python,我正在尝试从.txt文件中获取值。例如: 127.0.0.1次尝试的答案=1次=1s id=1 127.0.0.1次尝试的答案=1次=2s id=1 127.0.0.1次尝试的答案=1次=15s id=1 127.0.0.1次尝试的答案=1次=12s id=1 127.0.0.1次尝试的答案=1次=4s id=1 我想从每一行中累积所有“Time=xs”字,并尽可能将它们保存到变量(列表、数组等)中。我已经可以访问.txt文件,并尝试将其拆分以分别获取行,但结果似乎无法获得它们 with ope
with open("file.txt", "rt") as file:
lines = file.readlines()
for line in lines:
time = line.split(" ")
我还是一个初学者,如果这个问题很小,请原谅
谢谢大家! 您可以创建一个空列表并存储拆分行的第四个元素
times = []
with open("file.txt", "rt") as file:
for line in file:
times.append(line.split(" ")[4])
也可以使用正则表达式
重新导入
将open(“file.txt”)作为f:
times=re.findall(r“Time=(\d+)s”,f.read())
印刷(次)
# ['1', '2', '15', '12', '4']
注意:
f.read()
将整个文件内容读取到内存中。因此,如果文件很大,您应该迭代文件对象,并使用re.search()
应用模式,您可以避免file.readlines()
,只需对文件中的行执行,这将生成一个表单列表[“Time=1s”,“Time=2s”…]
小的“hack”,您可以使用line.split(“”[4]提取时间[5:-1]
.OP提到他想要累积时间=xs您不需要使用readlines()
这里,您可以对文件中的行进行迭代:。从可以应用的每一行(正则表达式)提取时间。match=re.search('Time=(\d+)s',line);如果匹配:Time=match.group(1)
。您还可以使用str.find()
获取'Time'的索引,并使用相同的函数获取第一个's'
后的索引:idx=line.find('Time');如果idx>=0:Time=line[idx+5:line.find('s',idx+5)]
。要将str转换为int
,您可以使用。