2014-07-25 1 views
11

ich eine Liste der Ticker-Symbole in eine Textdatei wie folgt gespeichert haben:Entfernen r n aus einer Python-Liste, nachdem er mit Leseleitungen importieren

MMM 
ABT 
ABBV 
ANF 
.... 

Dann benutze ich readlines die Symbole in eine Python-Liste zu setzen :

stocks = open(textfile).readlines() 

Allerdings, wenn ich auf der Liste darin aussehen enthält Windows-end-of-line-Trennzeichen, das ich nicht will:

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', ..... 

Kann jemand den einfachsten Weg vorschlagen, diese unerwünschten Zeichen zu entfernen?

Antwort

5

Sie könnten \r\n durch die leere Zeichenfolge in einem replace Befehl ersetzen.

stocks = [x.replace("\r\n","") for x in stocks] 
7

readlines() sollte niemals verwendet werden, es sei denn, Sie wissen, dass die Datei wirklich klein ist. Für Ihre Anwendung ist es besser rstrip()

with open(filename, 'r') as f: 
    for l in f: 
     l = l.rstrip() 
     # other operations. 
19

zu verwenden, das ist im Grunde wie readlines funktioniert. Sie könnten nachbearbeiten es:

stocks = [x.rstrip() for x in stocks] 

Aber ich ziehe mit nicht readlines überhaupt, wenn ich will nicht EOL-Zeichen (s), stattdessen tun:

stocks = open(textfile).read().splitlines() 

Oder noch besser:

with open(textfile) as f: 
    stocks = f.read().splitlines() 

(es wird mit ziemlicher Sicherheit keinen Unterschied machen, aber unter Verwendung von Kontext-Manager explizit nahe Dateiobjekten eine gute Gewohnheit zu bekommen)

0

Sie könnten es so tun:

stocks = open(textfile).read().splitlines() 
Verwandte Themen