1 blahblahblah 2 sdsdsdsdsd 3 uuuuuu 4 eeee 5 abcdef
出力したい文字列があります
1 blahblahblah
2 sdsdsdsdsd
3 uuuuuu
4 eeee
5 abcdef
\n
を使用してすべての番号の前に追加しようとしましたが、機能re.split
しませんでした
re.split(' (?=[1-9]:)', line)
1 blahblahblah 2 sdsdsdsdsd 3 uuuuuu 4 eeee 5 abcdef
出力したい文字列があります
1 blahblahblah
2 sdsdsdsdsd
3 uuuuuu
4 eeee
5 abcdef
\n
を使用してすべての番号の前に追加しようとしましたが、機能re.split
しませんでした
re.split(' (?=[1-9]:)', line)
以下は問題なく動作します。
re.sub(r'(\d+)', '\n\\1', input)
デモ:
>>> print(re.sub(r'(\d+)', r'\n\1', input))
1 blahblahblah
2 sdsdsdsdsd
3 uuuuuu
4 eeee
5 abcdef
式(\d+)
は 1 つ以上の数字に一致し、それを (キャプチャ グループを介して) 一致した数字が続く改行に置き換えます。
グループを使用する:
>>> s = '1 blahblahblah 2 sdsdsdsdsd 3 uuuuuu 4 eeee 5 abcdef'
>>> import re
>>> print(re.sub(r'([0-9]+)', r'\n\1', s))
1 blahblahblah
2 sdsdsdsdsd
3 uuuuuu
4 eeee
5 abcdef
最初の改行を削除するには、否定の後読みを追加します。
>>> print(re.sub(r'(?<!^)([0-9]+)', r'\n\1', s))
1 blahblahblah
2 sdsdsdsdsd
3 uuuuuu
4 eeee
5 abcdef
最初の数字の前に改行を挿入せずに置換を行う別の方法を次に示します。
In [62]: print(re.sub(r'\s(\d)', r'\n\1', line))
1 blahblahblah
2 sdsdsdsdsd
3 uuuuuu
4 eeee
5 abcdef
使用しない場合re
:
>>> s = '1 blahblahblah 2 sdsdsdsdsd 3 uuuuuu 4 eeee 5 abcdef'
>>> for i,word in zip(*[iter(s.split())]*2):
i = int(i)
print('{i} {word}'.format(**locals()))
出力:
1 blahblahblah
2 sdsdsdsdsd
3 uuuuuu
4 eeee
5 abcdef