J'ai sauvegardé une liste de symboles dans un fichier texte comme suit:
MMM
ABT
ABBV
ANF
....
Ensuite, j'utilise readlines pour mettre les symboles dans une liste Python:
stocks = open(textfile).readlines()
Cependant, lorsque je regarde la liste, elle contient un délimiteur de fin de ligne Windows que je ne souhaite pas:
list: ['MMM\r\n', 'ABT\r\n', 'ABBV\r\n', 'ANF\r\n', 'ACE\r\n', 'ACN\r\n', 'ACT\r\n', 'ADBE\r\n', 'ADT\r\n', 'AMD\r\n', 'AES\r\n', .....
Quelqu'un peut-il suggérer le moyen le plus simple de supprimer ces caractères indésirables?
C'est comme ça que readlines
fonctionne. Vous pouvez le post-traiter:
stocks = [x.rstrip() for x in stocks]
Mais je préfère ne pas utiliser readlines
du tout si je ne veux pas de caractère EOL, mais plutôt:
stocks = open(textfile).read().splitlines()
Ou même mieux:
with open(textfile) as f:
stocks = f.read().splitlines()
(Cela ne fera presque certainement pas de différence ici, mais utiliser des gestionnaires de contexte pour fermer explicitement les objets de fichier est une bonne habitude à prendre.)
readlines()
ne devrait jamais être utilisé à moins que vous sachiez que le fichier est vraiment petit. Pour votre application, il est préférable d'utiliser rstrip()
with open(filename, 'r') as f:
for l in f:
l = l.rstrip()
# other operations.
Vous pouvez remplacer \r\n
par la chaîne vide dans une commande replace
.
stocks = [x.replace("\r\n","") for x in stocks]
Vous pouvez le faire comme ceci:
stocks = open(textfile).read().splitlines()