質問

なし繰り返し、スペースを持つ単一行の文字列に複数行の文字列を崩壊してしまうクロスプラットフォームのライブラリ関数はありますか?

私は以下のいくつかのスニップを作ってみたが、これは私はおそらくCに最適化されたばかりのインポートを可能性の標準的な機能があるかしら?

def collapse(input):
    import re
    rn = re.compile(r'(\r\n)+')
    r = re.compile(r'\r+')
    n = re.compile(r'\n+')
    s = re.compile(r'\ +')
    return s.sub(' ',n.sub(' ',r.sub(' ',rn.sub(' ',input))))

P.S。良い観測してくれてありがとう。それは実際には約二倍私の場合は、プリコンパイルされた' '.join(input.split())正規表現で検索・置換するために比較して速く走るようr'\s+'は勝者のようです。

役に立ちましたか?

解決

ビルトインstring.split()方法あなたはそれを使用して、このように、スペースを使用して結果のリストに参加することができますので、空白の実行に分割します:

' '.join(my_string.split())

ここで完全なテストスクリプトです。

TEST = """This
is        a test\twith a
  mix of\ttabs,     newlines and repeating
whitespace"""

print ' '.join(TEST.split())
# Prints:
# This is a test with a mix of tabs, newlines and repeating whitespace

他のヒント

あなたはほんの少しより密接にPythonのマニュアルを読むのに必要な、正しい考えを持っています:

import re
somewhitespace = re.compile(r'\s+')
TEST = """This
is        a test\twith a
  mix of\ttabs,     newlines and repeating
whitespace"""

somewhitespace.sub(' ', TEST)

'This is a test with a mix of tabs, newlines and repeating whitespace'
multi_line.replace('\n', '')

仕事を行います。 '\n'はPythonで改行文字のユニバーサル終わりです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top