2017-09-24 3 views
1

J'ai un fichier texte:Impression du plus grand entier à partir du fichier texte à partir et donner la ligne de cette int est situé dans

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 

Je dois imprimer trois choses: la plus grande valeur int, le nombre de lignes et la ligne dans laquelle se trouve le plus grand int. J'ai fait les deux premiers, mais je n'ai aucune idée de comment imprimer la ligne dans laquelle se trouve le plus grand int. J'espère que vous pourrez m'aider.

C'est ce que je suis arrivé à ce jour:

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]) 

Je sais que très compliqué, mais je suis très nouveau pour le codage et donc je ne suis pas très bon.

Répondre

1

Peut-être que cela aide ... Une partie utilise python 3.6, mais vous pouvez l'omettre si vous avez un fichier prêt. Les dernières lignes répondent à votre question immédiate.

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)"