2011-06-22 38 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:查看上面更新的答案。 –