On me donne un fichier texte appelé input1.txt1
ce fichier contient les éléments suivants
The words between ammunition and millennium are: aspiration classified federation graduation millennium
Ecrivez un programme qui lit d'abord le nom d'un fichier d'entrée, suivi de deux chaînes représentant les limites inférieure et supérieure d'une plage de recherche. Le fichier doit être lu à l'aide de la méthode file.readlines (). Le fichier d'entrée contient une liste de chaînes alphabétiques de dix lettres, chacune sur une ligne distincte. Votre programme doit afficher toutes les chaînes de la liste qui se trouvent dans cette plage (y compris les limites).
EX:
Enter the path and name of the input file: input1.txt Enter the first word: ammunition Enter the second word (it must come alphabetically after the first word): millennium
aspiration classified federation graduation millennium philosophy quadratics transcript wilderness zoologists
3 Réponses :
Utilisez une compréhension de liste avec des inégalités pour vérifier la plage de chaînes:
out.sort() f = open('output.txt', 'w') text = '\n'.join(out) f.write(text) f.close()
Cela suppose que votre portée est inclusive aux deux extrémités, c'est-à-dire que vous souhaitez inclure les ammunition
et le millennium
aux deux extrémités de la portée.
Pour plus de la sorte out
la liste, puis écrire dans un fichier, utilisez:
out = [x for x in your_list if x >= 'ammunition' and x <= 'millennium']
@BoseongChoi Je ne suis pas au courant de l'opérateur de comparaison peut être enchaîné en Python :) Merci. IMHO fonctionne à la fois et est également lisible :)
Oh je vois mais comment pourrais-je ensuite réécrire ces nouvelles valeurs dans le fichier et afficher la sortie comme elle le montre dans l'exemple? Dois-je créer un nouveau fichier? Je ne peux pas simplement imprimer la liste car chaque mot de la liste se termine par un '\ n', donc il saute à une nouvelle ligne à chaque mot
si vous devez utiliser readline (), essayez ceci:
filepath = 'Iliad.txt' start = 'sometxtstart' end = 'sometxtend' apending = False out = "" with open(filepath) as fp: line = fp.readline() while line: txt = line.strip() if(txt == end): apending = False if(apending): out+=txt + '\n' if(txt == start): apending = True line = fp.readline() print(out)
file_to_open = input() bound1 = input() bound2 = input() with open(file_to_open) as file_handle: list1 = [line.strip() for line in file_handle] out = [x for x in list1 if x >= bound1 and x <= bound2] out.sort() print('\n'.join(map(str, out)))
Qu'avez-vous essayé jusqu'à présent?