2017-09-24 5 views
1

に位置している行を与える:私は、テキストファイル持っているから、テキストファイルからの最大の整数を印刷すると、このint型は

Jan Jansen heeft kaartnummer: 325255 
Erik Materus heeft kaartnummer: 334343 
Ali Ahson heeft kaartnummer: 235434 
Eva Versteeg heeft kaartnummer: 645345 
Jan de Wilde heeft kaartnummer: 534545 
Henk de Vrie heeft kaartnummer: 345355 

を、私は三つの印刷する必要があります。最大のint型の値、行数をと私は最初の2つをやったことがありますが、最大のintが入っている行をどのように印刷するか分かりません。皆さんが私を助けてくれることを願っています。

これは私がこれまでに得たものである:

import re 

num_lines = sum(1 for line in open("Kaartnummers.txt")) 
print(num_lines) 

int = open("Kaartnummers.txt", "r") 

file = open("Kaartnummers.txt", "r") 

file = file.read() 

numbers = re.findall(r"[-+]?\d*\.\d+|\d+", file) 

print(numbers) 

numbers.sort() 
print("The b"numbers[-1]) 

私はその非常に厄介を知っているが、私は、コーディングに非常に新しいですので、私は非常に良いではありませんよ。

答えて

1

おそらく、これは役に立ちます...その一部には、Python 3.6が使用されていますが、ファイルの準備ができていない場合は省略できます。最後の数行はあなたの直接の質問に答えます。

import csv 
from pathlib import Path 


doc = """Jan Jansen heeft kaartnummer: 325255 
Erik Materus heeft kaartnummer: 334343 
Ali Ahson heeft kaartnummer: 235434 
Eva Versteeg heeft kaartnummer: 645345 
Jan de Wilde heeft kaartnummer: 534545 
Henk de Vrie heeft kaartnummer: 345355""" 

# recreating your file with data, python 3.6 
# skip this line if you have the file already 
Path("mydata.csv").write_text(doc) 

with open("mydata.csv") as f: 
    reader = csv.reader(f) 
    rows = [row for row in reader] 

# now you have your data inside interpreter as list of strings 
print(rows)  

# this seems to be common string in all the lines 
sep = " heeft kaartnummer: " 

# lets seperate name and values to be bale to play with them 
rows2 = [row[0].split(sep) for row in rows] 
print(rows2) 

# lets associate the kaartnummer with a name in a dictionary 
knum_dict = {int(num):name for name, num in rows2} 
print(knum_dict) 


#I need to print three things: 
# the biggest int value, 
# the number of lines 
# and the line the biggest int is located in. 

print() 
print("Total number of lines:", len(rows)) 
max_num = max(knum_dict.keys()) 
print() 
print("Biggest int:", max_num) 
print("The biggest int is found for:", knum_dict[max_num]) 

#now back to your original quection - 
#and the line the biggest int is located in 
for i, row in enumerate(rows2): 
    if int(row[1]) == max_num: 
     # 
     print("The biggest int is found in line:", i+1) 
     print("(first line number is 1)" 
関連する問題