Извлеченные значения с плавающей точкой хранятся в списке списков вместо списка значений. - PullRequest
1 голос
/ 03 апреля 2020

Я делаю упражнение, чтобы найти все значения с плавающей точкой в ​​текстовом файле и вычислить среднее значение. Мне удалось извлечь все необходимые значения, но они хранятся в списке списков, и я не знаю, как извлечь их в виде чисел с плавающей точкой для выполнения расчетов. Вот мой код:

import re
fname = input("Enter file name: ")
fhandle = open(fname)
x = []

count = 0
for line in fhandle:
   if not line.startswith("X-DSPAM-Confidence:") : continue

   s = re.findall(r"[-+]?\d*\.\d+|\d+", line)
   x.append(s)
count = count + 1



print(x)

print("Done")

и это вывод x:

[['0.8475'], ['0.6178'], ['0.6961'], ['0.7565'], ['0.7626'], ['0.7556'], ['0.7002'], ['0.7615'], ['0.7601'], ['0.7605'], ['0.6959'], ['0.7606'], ['0.7559'], ['0.7605'], ['0.6932'], ['0.7558'], ['0.6526'], ['0.6948'], ['0.6528'], ['0.7002'], ['0.7554'], ['0.6956'], ['0.6959'], ['0.7556'], ['0.9846'], ['0.8509'], ['0.9907']]
Done

1 Ответ

1 голос
/ 03 апреля 2020

Вы можете сделать x плоский список с плавающей точкой с самого начала:

# ...
for line in fhandle:
    # ...
    s = re.findall(r"[-+]?\d*\.\d+|\d+", line)
    x.extend(map(float, s))

Обратите внимание, что re.findall возвращает список, поэтому мы расширяем x на него, применяя float к все строки в нем.

...