1
votes

comment sortir une liste de chaînes classées par ordre alphabétique entre deux valeurs d'entrée

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


1 commentaires

Qu'avez-vous essayé jusqu'à présent?


3 Réponses :


0
votes

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


2 commentaires

@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



0
votes

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)


0 commentaires

1
votes
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))) 

0 commentaires