解決: Pythonのreadlinesで^Mを含む文字列を読み込むと、勝手に改行される
これがPython3特有なのかPython全体でそうなのかは知らないですが、うちの環境だと^Mを文中に含むファイルをreadlines()で読み込んだところ、改行が行われました。
環境
Windows10上のWSL2, Ubuntu 20.04
Python 3.8.2
ソース
データ
文字列で貼り付けると^Mが消えるので画像で貼ります。
結果
0 /⌒ヽ
1 / ´_ゝ`)すいません、ちょっと通りますよ・・・
2 | /
3 | /| |
4 // | |
5 U U
何が困るって、csvでデータを管理していて複数行に分けたくないのがあるので^Mを除去したいのですが、そもそも読み込んでる途中で改行として認識されるのでうまく読み込めないという・・
sedでも使って変換しろって話でしょうか。
2020/05/17 追記
上の記事を書いたところ、nishioさんからコメント頂きました。readlinesではなく、open関数の仕様だったのですね・・
ファイル開くときのnewlineオプションのドキュメント読んでください。デフォルトではその挙動です。
— nishio hirokazu (@nishio) May 16, 2020
On input, if newline is None, universal newlines mode is
— nishio hirokazu (@nishio) May 16, 2020
enabled. ... If it has any of
the other legal values, input lines are only terminated by the given
string, and the line ending is returned to the caller untranslated.
https://docs.python.org/3/library/functions.html#open
open(filename)をopen(filename, newline='\r\n')にしたところ、^Mで読み込み途中で改行されることはなくなりました。