0

ファイルを読み込もうとしていて、各文字の間にスペースを入れて同じファイルに書き戻そうとしています。大文字と通常のセットが 1 つずつあります。

どちらのセットも普通に書けますが、両方とも普通に書けません。

これが私のコードです

import string
f = open('text.txt', 'r+')
file = f.read()
file = file.translate(None, string.whitespace)
file = file.translate(None, string.punctuation)
file = ' '.join(file)
file2 = file.upper()
f.seek(0)
f.write(file)
f.flush()
f.write(file2)
f.close()

しかし、残念ながらこれは機能しません。メモ帳で開くと、すべて意味不明です。Python で 2 回目に読み取ると、両方の文字列セットが完全に認識され、エラーになるまで意味不明になります。例えば:

 Y A L E T T E R S A Y I N G ô C    ƒ▬s ► É☺↨ ░☺≡≡≡ ≡≡≡                
 ☺☺☺        Ç>      ☺   ☺   ☺               ▼ ë☺                            ☺

だったらエンディングは「面倒くさがり」でいい

したがって、すべての途中で、本来のように書くのではなく、意味不明になります。

これは、ファイルに書き込まなくても発生します。

print file returns perfect string
print file2 returns perfect string
temp = file + file2
print temp returns gibberish part of the way through

では、なぜ意味不明なメッセージが返されるのでしょうか? これを修正するにはどうすればよいでしょうか?

4

1 に答える 1

0

再度書き込む前に、ファイルを切り詰める必要があります。

f.seek(0)
f.truncate()
于 2013-04-12T20:45:13.330 に答える