13

^MPythonスクリプトでテキストファイル(行末)から文字を削除するにはどうすればよいですか?

私は次のことを行いましたが^M、すべての改行があります。

file = open(filename, "w")
file.write(something)
4

7 に答える 7

9

ファイルを書き込んでいる場合は、 を指定する必要がありますopen(filename, "wb")。そうすれば、バイナリ モードで記述でき、Python は使用しているシステムの正しい改行を決定しようとしません。

于 2010-07-07T01:35:15.093 に答える
6

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" を含むテキスト ファイルが生成されます。

于 2010-07-07T02:12:29.990 に答える
4

string.replace('\ r'、'')は私のために働いた。

醜いですが、r+もr+bも他に何も機能しませんでした(私にとっては確かに):(

于 2013-02-28T14:33:00.833 に答える
2

dos2unix filename.py

改行を UNIX スタイルに変換します。

于 2010-07-09T10:18:40.200 に答える
1

移植性のために、次のことを試すことができます

import os
file = open(filename, "w")
file.write(something.replace('\r\n', os.linesep))
于 2015-07-05T02:58:39.443 に答える
0

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' 文字は指定された文字列に変換されます。

于 2021-10-25T09:54:58.687 に答える
-1

ファイルに対して autopep8 を実行します

> apt-get install python-autopep8

> autopep8 python_file_name > new_python_file_name.py
于 2016-05-28T15:50:42.400 に答える