2011-01-25 4 views
9

私は、それぞれ新しい文字を区切るためのリターンを含む単語リストを持っています。 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) 
+0

あなたがメモリ内に辞書を持っている場合は、なぜあなたは、ファイルシステムが関与する必要があるでしょうか? –

+1

あなたがこれまで持っているものを示してください。 –

+0

構文エラーがあります。if文は2つの方法で間違っています。末尾が欠落しています。使用するif文に割り当てることはできません== –

答えて

16
>>> string = "testing\n" 
>>> string 
'testing\n' 
>>> string = string[:-1] 
>>> string 
'testing' 

これは、基本的には、「文字列の最後のものを切り落とす」:は「スライス」オペレータであると言います。 非常にのように、どのように動作するかを読むことは良い考えです。

EDIT

私はちょうどあなたの更新の質問をお読みください。私は今理解していると思う。

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 

ような何かをしたい場合は、単に

をコメントアウトファイルが移動され

#!/usr/bin/env python 
import fileinput 

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

+0

何とかこのような文字列が "チョッパー" "test" [: - 1]に渡されるとどうなりますか –

+0

'rstrip'を使ったスクリプトは' rf.close() 'と' wf .close() '最後の行に - スクリプトはそれらのファイルを開きますが、それらは閉じません。効果的に、これは空の 'wf'で終わった。 – Roland

+0

@Rolandが更新されました。 – aqua

14

あなたは文字列から改行文字を削除するには、文字列のrstripメソッドを使用することができます。

>>> 'something\n'.rstrip('\r\n') 
>>> 'something' 
3

最も効率的に

'\nsomething\n'.split()ストリップ値を指定しないことですが

+0

私はこれをビジネスコンサルタントとして慎重に扱います。\ n ".split()'は '['Business'、 'C​​onsultant']' –

2

は、ファイル内の空行を削除した文字列からすべての特殊文字や空白を取り除くことができますバックアップファイルに出力し、標準出力は入力ファイルに送られます。

1

単純に使用すると、問題が解決します。

string.strip("\r\n") 
0
'whatever\r\r\r\r\r\r\r\r\n\n\n\n\n'.translate(None, '\r\n') 

戻り

'whatever' 
関連する問題