2013-05-15 11 views
73

基本的には、ユーザーにコンソールに文字列を入力するよう依頼していますが、文字列は非常に長く、多くの改行が含まれています。どのように私は、ユーザーの文字列を取るとすべての改行を削除すると、1行のテキストにします。文字列を取得する私の方法は非常に簡単です。長い文字列からすべての改行を削除する

string = raw_input("Please enter string: ") 

私はユーザーから文字列を取得する必要がありますか?私はMac上でPython 2.7.4を実行しています。

P.S.明らかに私は騒ぎであるので、ソリューションが最も効率的ではない場合でも、最も単純な構文を使用するソリューションは高く評価されます。

+0

のhttpを生成します:// stackoverflowの。com/questions/1185524/how-to-trim-whitespace-including-tabs –

+4

@NicYoung、それは似ているが違う。 'strip'は文字列の始めと終わりの空白を取り除きます。文字列の中ではありません。 –

答えて

125

あなたはraw_inputで改行を入力するにはどうすればよいですか?しかし、いったんあなたが取り除こうとする文字を含む文字列を持っていれば、ただreplaceです。

>>> mystr = raw_input('please enter string: ') 
please enter string: hello world, how do i enter line breaks? 
>>> # pressing enter didn't work... 
... 
>>> mystr 
'hello world, how do i enter line breaks?' 
>>> mystr.replace(' ', '') 
'helloworld,howdoienterlinebreaks?' 
>>> 

上記の例では、すべてのスペースを置き換えました。文字列'\n'は改行を表します。 \rは送料の返品を表しています(窓を開いている場合は、これらを取得している可能性があります。また、replaceが手数料を処理します)。

基本的に:これはモジュールstringをシャドウとして、あなたの変数stringを呼び出すことは悪い考えであることも

# you probably want to use a space ' ' to replace `\n` 
mystring = mystring.replace('\n', ' ').replace('\r', '') 

注意、。もう1つの名前は避けたいが、時々使うのが好きだ。file。同じ理由で。 Xbelloコメントに基づいて更新

+0

完璧に働いて、愚かな質問を申し訳ありません!私の初期の解決策は、文字列を列挙して\ nのすべてのインスタンスを探すことでしたが、リストには1文字しかなかったので、\またはnのどちらかが見つかるため、同じリストにはないので、エントリ。 –

+2

この答えは '\ r'キャリッジリターンについて言及しているので、私にとって非常に役に立ちます。私は '\ n'を削除するためのすべてのメソッドを試しましたが、' \ r'文字はまだ捕捉していませんでした。 – Clay

+1

これは通常私の仕事です - string.replace( '\ r \ n'、 ''))。 ほとんどのログ/テキストエディタファイルは、新しい行に対してこの形式に従う傾向があります。 –

18

あなたは、文字列を置き換える使用して試すことができます:

string = string.replace('\r', '').replace('\n', '') 
+0

いくつかのテキストに問題がありました。私はrstrip()を使用しようとしましたが、動作しませんでした。私はreplace()を使う。 –

10

string = my_string.rstrip('\r\n') 

は、あなたが(改行やタブを含む)、単一のセパレータとして連続した空白を扱いますなし、セパレータ引数、で文字列を分割することができ、よりhere

+2

私はこれでちょうど噛まれました。 \ nをrstripに指定すると、\ rは失敗します。何も指定しなければ、スペースや\ tなどがトリミングされます。 'rstrip(" \ r \ n ")' – xbello

+0

tnxを使う必要があり、答えを更新しました。非常にシンプルかつ効果的な – tokhi

1

始め/終わりの文字列

  • 追加の白文字の先頭/末尾に考慮

    • 追加の白の文字を取っ方法:次に、スペースを使用して参加しますすべての行の
    • さまざまな終端文字

    このような複数行の文字列を取ります。

    test_str = '\nhej ho \n aaa\r\n a\n ' 
    

    とは素敵な1行の文字列に

    >>> ' '.join([line.strip() for line in test_str.strip().splitlines()]) 
    'hej ho aaa a' 
    
  • +0

    これは、連続したラインのケースを処理しませんが、文字列の途中でフィード。 2行の改行により、出力に2つの連続する空白が生じます。 "test_str = '\ nhej ho \ n aaa \ r \ n \ n a \ n'"を試してください。 –

    関連する問題