1

置き換えようとしているテキストファイルで、余分な改行を削除しようとしています。変換

test="
123"

test="123"

私が現在持っているものは次のとおりです。

f = open("file.txt")
o = open("newfile.txt","w")
while 1:
  line = f.readline()
  if not line: break
  line = line.replace('test="\r','test="')
  o.write(line)
o.close()

問題はそれが戻ることです

  test="123"

<">と<123>の間に非表示の文字があります。現在行っていることに代わるより良い方法はありますか?私はPythonにあまり詳しくありません。ありがとうございます。

4

2 に答える 2

3

コードにはいくつかの欠陥があります。

  • fは最後に閉じられていません
  • \rあなたは、Windowsを無視して、置き換えるだけです\n-これは私が思うあなたの「見えない」文字です(Windowsはテキストファイル、Linux 、Mac\r\nで改行として使用されます)\n\r

ここに別のバージョンがあります(あなたが望むものに近いかもしれません;)):

with file("file.txt", "r") as f:
    with file("newfile.txt", "w") as o:
        o.write("".join(s.replace("\r", "").replace("\n","") 
                for s in f.readlines()))
于 2013-01-17T18:25:54.863 に答える
0

これを行う最善の方法 (私の意見では) は、Universal Newline Supportを有効にすることです。これにより、任意のオペレーティング システム (Windows、Mac、または Linux) で作成されたファイルでコードが機能するようになります。

これを行うには、ファイルの読み取りと書き込み時に「U」指定を追加します。あなたの例では:

with open("file.txt", "rU") as f:
    with open("newfile.txt","w") as o: 
        for line in f.readlines():
            o.write(line.replace("\n", ""))

これには、デフォルトである Universal Newline Support を使用して Python をビルドする必要があります。

于 2013-01-17T18:41:21.420 に答える