получить конкретные строки и данные из текстового файла в Python - PullRequest
0 голосов
/ 05 октября 2018

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

1 Lebron 30 5
1 Curry 29 8
1 Durant 20 4
2 Lebron 35 3
2 Curry 39 6
2 Durant 15 8
3 Lebron 25 6
3 Curry 30 5
3 Durant 21 5

Я хочу иметь возможность ввести имя и получить первый, третий, четвертый и умножение третьего и четвертого столбца.

Я знаю, как попросить имя, но я не могу получить дальше, чем это.Я представляю что-то вроде разделения текста и цикла for.

Это то, что я сделал до сих пор

fileName = input("Enter the file name: ")
playerName = input("Enter the player name: ")

inputFile = open(fileName, 'r')
text = inputFile.read()

print("%4s % 8s % 10s % 12s" % \
        ("game", "Points", 
        "Assists", "PointsxAssists"))
words = len(text.split())

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете попробовать что-то вроде этого (при условии, что в каждой строке файла есть только 3 пробела):

file_name = input("Enter the file name: ")
filter_name = input("Enter a name for filtering: ")
filter_name = filter_name.lower()

with open(file_name) as f:
    print('Showing names that contain "{}"'.format(filter_name))
    print('{:4s} {:10s} {:10s} {:10s}'.format(
        'game', 'points', 'assists', 'p x a'))

    for line in f:
        line = line.strip()
        if len(line) > 0:
            game, name, col3, col4 = line.split()
            name = name.lower()

            if filter_name in name:
                col3 = int(col3)   # this may raise ValueError if it is not a valid int
                col4 = int(col4)   # this may raise ValueError if it is not a valid int
                product = col3 * col4

                print('{:4s} {:10d} {:10d} {:10d}'.format(
                    game, col3, col4, product))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...