我想打开一个文件,在=
号后获取数字,然后将结果放入列表中。我已完成了第一步,但仍将结果分配到列表中。
我试图创建一个列表并为其分配结果,但是当我打印列表时,它仅显示最后的结果:
import cv2 as cv
import time
import numpy
from math import log
import csv
import re
statList = []
with open("C:\\ProgramData\\OutilTestObjets3D\\MaquetteCB-2019\\DataSet\\DEFAULT\\terrain\\3DObjects\\building\\house01.ive.stat.txt", 'r') as f:
#
statList = f.readlines()
statList = [x.strip() for x in statList]
for line in statList :
if (re.search("=" ,str(line))):
if (re.search('#IND',str(line))):
print("ERREUR")
else:
results = re.findall("=\s*?(\d+\.\d+|\d+)", str(line))
print ("result="+str(results))
statList.append(log(float(results[0])))
floatList = [str(results)]
print(floatList)
答案 0 :(得分:0)
这是因为您每次通过循环都会覆盖结果变量。 尝试
#
results = []
statList = f.readlines()
statList = [x.strip() for x in statList]
for line in statList :
if (re.search("=" ,str(line))):
if (re.search('#IND',str(line))):
print("ERREUR")
else:
results.extend(re.findall("=\s*?(\d+\.\d+|\d+)", str(line)))
print ("result="+str(results))
statList.append(log(float(results[0])))
floatList = [str(results)]
print(floatList)
答案 1 :(得分:0)
程序的问题是定义一个空列表statList
,然后将其重新定义为statList = f.readlines()
并附加results
。因此,更改空列表的名称,然后只要extend
是列表对象,就可以使用results
。最后,使用内置的map
函数将函数应用于列表中的每个项目:
from math import log
import re
final_result = []
with open("file.txt", 'r') as f:
#
statList = f.readlines()
statList = [x.strip() for x in statList]
for line in statList :
if (re.search("=" ,str(line))):
if (re.search('#IND',str(line))):
print("ERREUR")
else:
result = re.findall("=\s*?(\d+\.\d+|\d+)", str(line))
print("result=" + result[0])
final_result.extend(result)
# final_result.append(result[0])
floats_list = list(map(float, final_result))
logs_list = list(map(log, floats_list))