White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

解決: Pythonのreadlinesで^Mを含む文字列を読み込むと、勝手に改行される

これがPython3特有なのかPython全体でそうなのかは知らないですが、うちの環境だと^Mを文中に含むファイルをreadlines()で読み込んだところ、改行が行われました。

 

環境

Windows10上のWSL2, Ubuntu 20.04

Python 3.8.2

 

ソース

ファイル読み込み

 

データ

文字列で貼り付けると^Mが消えるので画像で貼ります。

f:id:showyou:20200516234402p:plain

^Mはctrl-Mです

結果

0    /⌒ヽ
1   / ´_ゝ`)すいません、ちょっと通りますよ・・・
2   |    /
3   | /| |
4   // | |
5  U  U

 

何が困るって、csvでデータを管理していて複数行に分けたくないのがあるので^Mを除去したいのですが、そもそも読み込んでる途中で改行として認識されるのでうまく読み込めないという・・

 

sedでも使って変換しろって話でしょうか。

 

2020/05/17 追記

上の記事を書いたところ、nishioさんからコメント頂きました。readlinesではなく、open関数の仕様だったのですね・・

https://docs.python.org/3/library/functions.html#open

 

open(filename)をopen(filename, newline='\r\n')にしたところ、^Mで読み込み途中で改行されることはなくなりました。