Python拆分,除非下一个角色是东西

时间:2016-08-03 21:39:09

标签: python python-3.x split

我使用的是Python 3.5,我希望用字符\n或新行分割字符串。但是,如果该行以下划线开头,那么它应该将该行放在它上面的那一行。我需要解决方案适用于所有角色,而不仅仅是下划线。它应该像这样工作:

a = '''red
yellow
green
_surprise!
blue'''

print(a.split('\n')

并且应该导致:

['red', 'yellow', 'green\n_surprise', 'blue']

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

使用正则表达式非常简单:

import re
re.split('\n(?!_)', a)
# ['red', 'yellow', 'green\n_surprise!', 'blue']

这个正则表达式意味着split by \n not followed by _

答案 1 :(得分:0)

您可以使用某些字符重新\n_,然后使用分隔符\n

拆分字符串
>>> a = '''red
... yellow
... green
... _surprise!
... blue'''
>>> a
'red\nyellow\ngreen\n_surprise!\nblue'

或者:

>>> [x.replace("###", "\n_") for x in a.replace("\n_", "###").split()]
['red', 'yellow', 'green\n_surprise!', 'blue']

或者:

>>> [x.replace("###", "\n_") for x in a.replace("\n_", "###").splitlines()]
['red', 'yellow', 'green\n_surprise!', 'blue']