2017-02-20 18 views
1

Я пишу цикл для поиска в файле excel. Дело в том, чтобы проверить максимальное значение в readline. Вот мой код до сих порPython while loop для поиска наибольшего значения в файле

def maxwages(): 
    leave = false 
    max = 0 
    city = '' #city for later printing 
    fo = open(path,'r') #open file 
    while leave == false: 
     line = fo.readline() #read file 
     newline = line.split(',') 
     check = newline[len(newline)-1] #the value is the last element in the line 
     if check > max: #if the checked value is higher than previous max 
     max = newline[len(newline)-1] #assign new max value with checked value 
     city = newline[2] #city name 
     print max, city #seeing what's going on 
     if fo is None: 
     leave = true 
    print city,'Has the highest wages at',max,'dollars' 
     fo.close 

Мой выходной ток

"TotalWages" 
"City" 
1089095041 
"WESTWOOD" 
325436960 
"WOODCLIFF LAKE" 
401312434 
"WHITEHOUSE STATION" 
528315021 
"WOODBRIDGE" 
896273759 
"WYCKOFF" 
924776075 
"BRONX" 
97578251 
"BRONX" 
98754584 
"AVON" 
9999157 
"BUZZARDS BAY" 

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

my data

другой редактировать добавил мои данные Я ищу, ответы были очень полезны до сих пор

+1

, что помогло бы образец вашего входа ... –

+1

Вам нужно преобразовать из строк в числа: 'проверить = INT (символ новой строки [-1])' –

+0

Попробую добавить строку здесь, Мне нужно посмотреть, как он форматируется. * Редактировать * это выглядит ужасно, я не уверен, если это полезно '7675 \t \t СТАНДАРТ WESTWOOD \t \t NJ ОСНОВНОЙ \t \t 40,98 -74,03 \t NA-US-NJ-WESTWOOD \t \t ЛОЖЬ 13245 \t \t 24083 1089095041' – dvoid

ответ

1

Вы можете обойти эту проблему, используя другой подход.

with open(path, "r") as f: 
    lines = f.readlines() 

    # Next line will create a list of tuples. Each tuple will be (value, city), assuming value is at position -1 of your line and city at position 2 
    values_cities = [(int(line.split(',')[-1]), line.split(',')[2]) for line in lines] 

    max_pair = max(values_cities) # It will find the max of every tuple (the first element, which is the value) 
+0

Это интересное решение, я все еще изучаю python и не знаю, что могу сделать это, спасибо за совет! – dvoid