web-dev-qa-db-ja.com

ファイル出力で改行を削除/改行を戻す

新しい文字を区切るためのリターンを含むワードリストがあります。 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)
12
Parseltongue
>>> 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')
18
aqua

文字列の rstrip メソッドを使用して、文字列から改行文字を削除できます。

>>> 'something\n'.rstrip('\r\n')
>>> 'something'
16
Senthil Kumaran

最も効率的な方法は、ストリップ値を指定しないことです

'\nsomething\n'.split()は、文字列からすべての特殊文字と空白を削除します

3
Jakob Bowyer

使用するだけで問題が解決します。

   string.strip("\r\n")
2
Venu Murthy

ファイル内の空の行を削除します。

#!/usr/bin/env python
import fileinput

for line in fileinput.input("wordlist.txt", inplace=True):
    if line != '\n':
       print line,

ファイルはバックアップファイルに移動され、標準出力は入力ファイルに送られます。

1
jfs
'whatever\r\r\r\r\r\r\r\r\n\n\n\n\n'.translate(None, '\r\n')

戻り値

'whatever'
0
eatkimchi