Pythonで文字列崩壊ライブラリ関数はありますか?
-
12-09-2019 - |
質問
なし繰り返し、スペースを持つ単一行の文字列に複数行の文字列を崩壊してしまうクロスプラットフォームのライブラリ関数はありますか?
私は以下のいくつかのスニップを作ってみたが、これは私はおそらく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で改行文字のユニバーサル終わりです。
所属していません StackOverflow