新しい文字を区切るためのリターンを含むワードリストがあります。 PythonでファイルI/Oを使用してこれらの各リターンをプログラムで削除する方法はありますか?
編集:文字列を操作してリターンを削除する方法を知っています。これらのリターンが削除されるように、ファイルを物理的に編集したいと思います。
私はこのようなものを探しています:
wfile = open("wordlist.txt", "r+")
for line in wfile:
if len(line) == 0:
# note, the following is not real... this is what I'm aiming to achieve.
wfile.delete(line)
>>> string = "testing\n"
>>> string
'testing\n'
>>> string = string[:-1]
>>> string
'testing'
これは基本的に「文字列の最後のものを切り取る」と言います。:
は「スライス」演算子です。それがvery役に立つので、それがどのように機能するかについて読むのは良い考えでしょう。
[〜#〜]編集[〜#〜]
更新された質問を読みました。私は今理解したと思います。次のようなファイルがあります。
aqua:test$ cat wordlist.txt
Testing
This
Wordlist
With
Returns
Between
Lines
そして、あなたは空の行を取り除きたいです。読み取り中にファイルを変更するのではなく、次のように古いファイルから空でない行を書き込むことができる新しいファイルを作成します。
# script
rf = open("wordlist.txt")
wf = open("newwordlist.txt","w")
for line in rf:
newline = line.rstrip('\r\n')
wf.write(newline)
wf.write('\n') # remove to leave out line breaks
rf.close()
wf.close()
あなたは得るべきです:
aqua:test$ cat newwordlist.txt
Testing
This
Wordlist
With
Returns
Between
Lines
あなたが好きなものなら
TestingThisWordlistWithReturnsBetweenLines
コメントアウトするだけ
wf.write('\n')
文字列の rstrip メソッドを使用して、文字列から改行文字を削除できます。
>>> 'something\n'.rstrip('\r\n')
>>> 'something'
最も効率的な方法は、ストリップ値を指定しないことです
'\nsomething\n'.split()
は、文字列からすべての特殊文字と空白を削除します
使用するだけで問題が解決します。
string.strip("\r\n")
ファイル内の空の行を削除します。
#!/usr/bin/env python
import fileinput
for line in fileinput.input("wordlist.txt", inplace=True):
if line != '\n':
print line,
ファイルはバックアップファイルに移動され、標準出力は入力ファイルに送られます。
'whatever\r\r\r\r\r\r\r\r\n\n\n\n\n'.translate(None, '\r\n')
戻り値
'whatever'