нахождение среднего числа чисел, которое следует после строки в файле для чтения с пробелами между python, например: Tom Bombadil _______ 6.5 5.5 4.5 - PullRequest
0 голосов
/ 21 июня 2020
def avg(input):
    with open(input, "r") as file:
        average = []
        add = 0.0
        for line in file:
            f = line.split("_______________")
            for i in range(1, len(f)):
                add = 0.0
                l = f[i].split(" ")
                for num in l:
                    add = add + float(num)
                print(f[0], "has average", round((add / 3),1))
    return " "

f = open('input.txt', 'r')
for line in iter(f):
    print(line)


file = "input.txt"
avg(file)

(//// input.txt ///// содержит эти ////)

Tom Bombadil_______6.5 5.5 4.5
Dain Kaput_______6.7 7.2 7.7
Chris Cohen_______6.8 7.8 7.3
Dirk Dirksen_______ 1.0 5.0 7.7

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Вы можете использовать str.rsplit() с параметром maxsplit=. Для вычисления среднего используйте statistics.mean.

from statistics import mean

with open('file.txt', 'r') as f_in:
    for line in f_in:
        if not line.strip():    # skip blank lines
            continue
        line = line.replace('_', ' ').rsplit(maxsplit=3)
        print('{} has average {:.1f}'.format(line[0], mean(float(v) for v in line[1:])))

Печать:

Tom Bombadil has average 5.5
Dain Kaput has average 7.2
Chris Cohen has average 7.3
Dirk Dirksen has average 4.6
0 голосов
/ 21 июня 2020

Хотел бы что-нибудь вроде этой помощи

import numpy as np
n = "Tom Bombadil_______6.5 5.5 4.5".split('_______')[1].split()
np.mean([float(x) for x in n])

Вывод

5.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...