Python 3: наибольшее число в текстовом файле - PullRequest
0 голосов
/ 18 сентября 2018

Вот мой код:

def get_latest(file_name):
    max = 0
    with open(file_name) as file:
        for line in file.readlines():            
            num = int(line.split("\t")[2])
            if (max < num):
                max = num
            line=line.split("\t")
            #y=max
            if str(max) in line:
                print(line)

get_latest('game_stat.txt')

Это вывод:

['Minecraft', '23', '2009', 'Survival game', 'Microsoft\n']
['Terraria', '12', '2011', 'Action-adventure', 'Re-Logic\n']
['Diablo III', '12', '2012', 'RPG', 'Blizzard Entertainment\n']

Что я должен сделать, чтобы напечатать только строку с самой новой датой выпуска?

Txt файл выглядиткак это:

Minecraft   23  2009    Survival game   Microsoft
World of Warcraft   14  2004    RPG Blizzard Entertainment
Terraria    12  2011    Action-adventure    Re-Logic
Diablo III  12  2012    RPG Blizzard Entertainment
Half-Life 2 12  2004    First-person shooter    Valve Corporation
Counter-Strike  12.5    1999    First-person shooter    Valve Corporation
The Sims    11.24   2000    Simulation  Electronic Arts
StarCraft   11  1998    Real-time strategy  Blizzard Entertainment
Garry's Mod 10  2006    Sandbox Facepunch Studios
....etc

Я не могу понять это.Заранее спасибо!

1 Ответ

0 голосов
/ 18 сентября 2018

Вам нужно сделать max по всем строкам, с помощью ключевой функции , которая сравнивает годы как целые числа.Ниже я использую csv.reader, чтобы разобрать структуру файла для меня.

import csv

def get_latest(file_name):
    with open(file_name, newline='') as file:
        reader = csv.reader(file, dialect='excel-tab')
        return max(reader, key=lambda row: int(row[2]))

print(get_latest('game_stat.txt'))

Запись с самым большим годом будет самой последней из выпущенных.(Предполагая, что у вас нет данных для игр, выходящих в будущем.)

...