2011-06-22 64 views
0

我有以下行:Python:如何忽略句子的分隔部分?

CommonSettingsMandatory = #<Import Project="[\\.]*Shared(\\vc10\\|\\)CommonSettings\.targets," />#,true 

,我想下面的輸出:

['commonsettingsmandatory', '<Import Project="[\\\\.]*Shared(\\\\vc10\\\\|\\\\)CommonSettings\\.targets," />', 'true' 

如果我做一個簡單的正則表達式用逗號,它會在出現在它的值拆分值,就像我在目標後面寫了一個逗號,它會在這裏分裂。 所以我想忽略##之間的文本,以確保沒有分裂。 我真的不知道該怎麼辦!

+0

你的分隔符是什麼?看來你同時使用'='和',' –

回答

0

http://docs.python.org/library/re.html#re.split

import re 

string = 'CommonSettingsMandatory = #toto,tata#, true' 
splitlist = re.split('\s?=\s?#(.*?)#,\s?', string) 

然後splitlist包含['CommonSettingsMandatory', 'toto,tata', 'true']

+0

這聽起來不錯,但它並沒有工作......它仍然給我完整的字符串 –

+0

re.split('\ s?#(。*?)#\ s?',字符串)工作。謝謝! –

+0

不客氣。 – JAB

0

雖然您可能能夠使用逆向分割,但我會使用由此表達式捕獲的組。

(\S+)\s*=\s*##([^#]+)##,\s*(.*) 

m = re.Search(expression, myString)。使用m.group(1)對於第一串,m.group(2)爲第二等

+0

不需要看後面。 're.split'會爲您提供分組模式中的捕獲組所持有的值。 – JAB

0

如果我正確理解你,你試圖分隔字符串使用空格作爲分隔符,但你想也刪除井號之間的任何文本?

如果這是正確的,爲什麼不簡單地刪除英鎊符號分隔文本之前拆分字符串?

import re 
myString = re.sub(r'#.*?#', '', myString) 
myArray = myString.split(' ') 

編輯:(基於改進的問題)

import re 
myArray = re.findall(r'^(.*?) = #(.*?)#,(.*?)$', myString) 

這實際上將返回記錄,包括你的比賽的陣列,在形式:

[ 
    (
     'commonsettingsmandatory', 
     '<Import Project="[\\\\.]*Shared(\\\\vc10\\\\|\\\\)CommonSettings\\.targets," />', 
     'true' 
    ) 
] 

(間距增加說明格式更好)

+0

我嘗試使用逗號作爲分隔符分割。 –

+0

@Vincent S:查看上面更新的答案。 –