簡體   English   中英

如何在Python中拆分此字符串?

[英]How can I split this string in Python?

我有一個變量string

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'''

我正試圖在文本Layer之前拆分字符串,如下所示。

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'
]
import re
print re.split(r"\n(?=Layer)",x)

您可以使用lookaheadre這里來達到相同。

輸出:

['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.split

re.split(r'\s+(?=Layer:)', string)

這將拆分一個或多個空格字符,這些空格字符就在字符串Layer:之前。 並注意\\s將匹配任何類型的空格字符,即垂直( 換行符,carrage返回 )以及水平空格字符( 空格,制表符 )。

例:

>>> 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']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM