Dans Article précédent, lorsque je lis un fichier texte séparé par des sauts de ligne et fait une liste, chaque élément contient un symbole de saut de ligne. Je voulais le supprimer.
J'ai fait référence à cet article de blog. En en faisant une carte (processus, objet de liste), vous pouvez appliquer le processus à chaque élément. Je suis sur le point de tourner la déclaration for.
Une version améliorée du script sur le post précédent du lien de motivation.
contain_or_not.py
import sys
r0 = open('vocab.txt','r') #Ouvrir le fichier en mode lecture
vocab = r0.readlines() #vocab.txt contient des mots séparés par des sauts de ligne
r0.close()
argvs = sys.argv
words = argvs[1:] #argvs[0]Contient le nom du fichier lors de l'exécution
def remove(s):
return s.replace('\n','') #replace('Avant le remplacement','Après remplacement')Remplacez la chaîne correspondante
new_vocab = list(map(remove, vocab)) #Supprimez le caractère de saut de ligne de chaque élément de la voix avec la fonction de carte
for word in words:
if word in new_vocab:
print(word + ' is in vocab at line %d.' %(new_vocab.index(word)+1))
else:
print(word + ' is not in vocab.')
En passant, je produis également la ligne sur laquelle le mot que je veux vérifier est dans la liste.
Quand j'ai utilisé la fonction de carte sans réfléchir au début, new_vocab est devenu un objet de carte, j'ai donc utilisé la fonction de liste pour le lister à nouveau. L'objet de la carte semble être appelé un itérateur. Est-ce un objet qui a pour fonction d'effectuer le même traitement pour chaque élément de la liste au lieu d'écrire une instruction for? Je ne suis toujours pas très au courant.
Recommended Posts