web-dev-qa-db-ja.com

リードラインを使用してインポートした後、Pythonリストから\ r \ nを削除する

次のように、ティッカーシンボルのリストをテキストファイルに保存しました。

MMM
ABT
ABBV
ANF
....

次に、readlinesを使用して、シンボルをPythonリストに入れます。

stocks = open(textfile).readlines()

ただし、そのリストを見ると、Windowsの行末区切り文字が含まれていますが、これは望ましくありません。

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

誰かがこれらの不要な文字を削除する最も簡単な方法を提案できますか?

16
Justin

それが基本的にreadlinesの仕組みです。あなたはそれを後処理することができます:

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

しかし、EOL文字が必要ない場合は、readlinesをまったく使用せず、代わりに次のようにします。

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

またはさらに良い:

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

(ほぼ確実にここでは違いはありませんが、コンテキストマネージャーを使用してファイルオブジェクトを明示的に閉じることは、良い習慣です)

23
roippi

ファイルが本当に小さいことがわかっている場合を除き、readlines()を使用しないでください。アプリケーションでは、rstrip()を使用することをお勧めします

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

replaceコマンドで\r\nを空の文字列に置き換えることができます。

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

次のようにできます:

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