如何在Python中拆分此字符串?
我有一个变量如何在Python中拆分此字符串?,python,Python,我有一个变量字符串 string = '''Layer:defaultRenderLayer Line 1 text goes here Line 2 text goes here Line 3 text goes here Layer:diffuse Line 1 text goes here Line 2 text goes here Line 3 text goes here Line 4 text goes here Line 5 text goes here Layer:outline
字符串
string = '''Layer:defaultRenderLayer
Line 1 text goes here
Line 2 text goes here
Line 3 text goes here
Layer:diffuse
Line 1 text goes here
Line 2 text goes here
Line 3 text goes here
Line 4 text goes here
Line 5 text goes here
Layer:outline
Line 1 text goes here
Line 2 text goes here'''
我试图在文本层
之前拆分字符串,如下所示
string_list = [
'Layer:defaultRenderLayer\nLine 1 text goes here\nLine 2 text goes here\nLine 3 text goes here',
'Layer:diffuse\nLine 1 text goes here\nLine 2 text goes here\nLine 3 text goes here\nLine 4 text goes here\nLine 5 text goes here',
'Layer:outline\nLine 1 text goes here\nLine 2 text goes here'
]
您需要使用
re.split
re.split(r'\s+(?=Layer:)', string)
这将对字符串层:
之前存在的一个或多个空格字符进行拆分。请注意,\s
将匹配任何类型的空格字符,即垂直(换行符、回车符)和水平空格字符(空格、制表符)
例如:
>>> import re
>>> string = '''Layer:defaultRenderLayer
Line 1 text goes here
Line 2 text goes here
Line 3 text goes here
Layer:diffuse
Line 1 text goes here
Line 2 text goes here
Line 3 text goes here
Line 4 text goes here
Line 5 text goes here
Layer:outline
Line 1 text goes here
Line 2 text goes here'''
>>> re.split(r'\s+(?=Layer:)', string)
['Layer:defaultRenderLayer\nLine 1 text goes here\nLine 2 text goes here\nLine 3 text goes here', 'Layer:diffuse\nLine 1 text goes here\nLine 2 text goes here\nLine 3 text goes here\nLine 4 text goes here\nLine 5 text goes here', 'Layer:outline\nLine 1 text goes here\nLine 2 text goes here']
您可以在此处使用lookahead
和re
来实现相同的功能
输出:
['Layer:defaultRenderLayer\nLine 1 text goes here\nLine 2 text goes here\nLine 3 text goes here',
'Layer:diffuse\nLine 1 text goes here\nLine 2 text goes here\nLine 3 text goes here\nLine 4 text goes here\nLine 5 text goes here',
'Layer:outline\nLine 1 text goes here\nLine 2 text goes here']
或者您也可以使用re.findall
print re.findall(r"\bLayer\b[\s\S]*?(?=\nLayer\b|$)",x
如何使用re.findall实现相同的过程?请尝试
re.findall(r'(?s)。+?(?=\bLayer:|$),string)
print re.findall(r"\bLayer\b[\s\S]*?(?=\nLayer\b|$)",x