質問する
1360 次
2 に答える
5
re
モジュールはやり過ぎかもしれないと思います。コンテンツを分割して\n
、空の文字列を削除するだけです。
>>> s = """This is the text
...
... I am interested in splitting,
...
...
... but I want to remove blank lines!"""
>>> lines = [l for l in s.split("\n") if l]
>>> lines
['This is the text', 'I am interested in splitting,', 'but I want to remove blank lines!']
またstring.split
、約2倍の速さのようです。
> python -m timeit -s 's = "This is the text\n\nthat I want to split\n\n\nand remove empty lines"; import re;' '[l for l in re.split(r"\n", s) if l]'
100000 loops, best of 3: 2.84 usec per loop
> python -m timeit -s 's = "This is the text\n\nthat I want to split\n\n\nand remove empty lines"' '[l for l in s.split("\n") if l]'
1000000 loops, best of 3: 1.08 usec per loop
于 2012-08-30T20:23:57.087 に答える
1
標準分割には、複数文字の区切り文字を含めることができます。
>>> '''1st para
... second line
...
... 2nd para
... '''.split('\n\n')
['1st para\nsecond line', '2nd para\n']
編集
これは、re.split
Linux および Windows スタイルの行末を処理でき、段落間の複数の空白行を処理できる です。
\n
テスト:
>>> x='this is\na multiline\ntest\n\n2nd para\ngraph\n\n\n\nmore\nmore\nmore\n\n\n\n\nmore\n'
>>> import re
>>> re.split(r'(?:\r?\n){2,}',x)
['this is\na multiline\ntest', '2nd para\ngraph', 'more\nmore\nmore', 'more\n']
\r\n
テスト:
>>> y=x.replace('\n','\r\n')
>>> re.split(r'(?:\r?\n){2,}',y)
['this is\r\na multiline\r\ntest', '2nd para\r\ngraph', 'more\r\nmore\r\nmore', 'more\r\n']
于 2012-08-30T21:05:08.330 に答える