Как разделить имя и сумму чисел? - PullRequest
1 голос
/ 28 апреля 2020

Я изо всех сил пытаюсь сложить эти числа и разделить имена. Итак, мне нужно напечатать каждую строку, содержащую имена и общее количество.

например Peter Jones: 155

Пример файла 'test1.txt':

Marshall Rogers, 88, 21, 90
Richard Lao, 30
Peter Jones, 23, 54,78
AABB CC EE RR rest, 90, 3, 3, 4

Вот мой код:

def find_their_numbers(files):
    """print it out"""
    file = open(files)
    lines = file.read().splitlines()
    nam = ""
    new_list = []
    for name in lines:
        names = name.split(',')
        for i in range(len(names)):
            if i == 0:
                print(names[i] + ':', end='')
            if i > 0:
                print(names[i])
find_their_numbers('test1.txt')

Ответы [ 3 ]

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

Вы можете сделать это, не находя индивидуально каждый номер:

def find_their_numbers(text_file):
    with open(text_file) as f:
        lines = f.read().splitlines()
        for line in lines:
            line_split = line.split(',')
            name = line_split[0]
            total = sum([int(x) for x in line_split[1:]])
            print(name + ": " + str(total))

Образец теста:

>>> find_their_numbers('test1.txt')
rshall Rogers: 199
Richard Lao: 30
Peter Jones: 155
AABB CC EE RR rest: 100
1 голос
/ 28 апреля 2020

Попробуйте:

file = open(files)
lines = file.read().splitlines()
for name in lines:
    names = name.split(',')
    print(f"{names[0]}: {sum(map(int,names[1:]))}")

, где sum(map(int,names[1:])) отрежет names от второго элемента, преобразует все элементы в целые и суммирует их.

0 голосов
/ 28 апреля 2020

Вы можете использовать распаковку, чтобы отделить имя от остальных компонентов:

with open(fileName,'r') as file:
    for line in file.readLines():
        name,*numbers = line.split(',')
        print(name + ":", sum(map(int,numbers)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...