^M
Pythonスクリプトでテキストファイル(行末)から文字を削除するにはどうすればよいですか?
私は次のことを行いましたが^M
、すべての改行があります。
file = open(filename, "w")
file.write(something)
^M
Pythonスクリプトでテキストファイル(行末)から文字を削除するにはどうすればよいですか?
私は次のことを行いましたが^M
、すべての改行があります。
file = open(filename, "w")
file.write(something)
ファイルを書き込んでいる場合は、 を指定する必要がありますopen(filename, "wb")
。そうすれば、バイナリ モードで記述でき、Python は使用しているシステムの正しい改行を決定しようとしません。
Python は、バイナリ モードまたはテキスト モードでファイルを開くことができます。デフォルトはテキストなので、モード「w」はテキストモードでの書き込みを意味します。テキスト モードでは、Python は使用しているプラットフォームに合わせて行末を調整します。これは、Windows では次のコードを意味します。
f = open("foo.txt", "w")
f.write("Hello\n")
"Hello\r\n" を含むテキスト ファイルが生成されます。
モードで「b」を使用すると、ファイルをバイナリモードで開くことができます。
f = open("foo.txt", "wb")
f.write("Hello\n")
"Hello\n" を含むテキスト ファイルが生成されます。
string.replace('\ r'、'')は私のために働いた。
醜いですが、r+もr+bも他に何も機能しませんでした(私にとっては確かに):(
dos2unix filename.py
改行を UNIX スタイルに変換します。
移植性のために、次のことを試すことができます
import os
file = open(filename, "w")
file.write(something.replace('\r\n', os.linesep))
json.dumpを実行するときにキャリッジリターンを明示的に設定する方法は? ソリューションがopen
含まれています:関数には追加のパラメーターがありますnewline
:
file = open(filename, "w", newline="\n")
file.write(something)
newline は、ユニバーサル改行モードの動作を制御します (テキスト モードにのみ適用されます)。None、''、'\n'、'\r'、および '\r\n' を指定できます。次のように機能します。
ストリームから入力を読み取るときに、改行が None の場合、ユニバーサル改行モードが有効になります。入力の行は '\n'、'\r'、または '\r\n' で終わることができ、これらは呼び出し元に返される前に '\n' に変換されます。'' の場合、ユニバーサル改行モードが有効になりますが、行末は翻訳されずに呼び出し元に返されます。他の正当な値のいずれかが含まれている場合、入力行は指定された文字列でのみ終了し、行末は翻訳されずに呼び出し元に返されます。
出力をストリームに書き込むとき、改行が None の場合、書き込まれた '\n' 文字はすべて、システムのデフォルトの行区切り文字 os.linesep に変換されます。改行が '' または '\n' の場合、翻訳は行われません。newline がその他の有効な値のいずれかである場合、書き込まれた '\n' 文字は指定された文字列に変換されます。
ファイルに対して autopep8 を実行します
> apt-get install python-autopep8
> autopep8 python_file_name > new_python_file_name.py