2013-01-09 37 views
0

我想获得随附的内容。斯普利特只允许我用一个分隔符分割。获得随附的内容

输入:

\x02\xxx\xxx\xxx\xxx\x03\x02\xxx\xxx\xxx\xxx\x03\x02\xxx\xxx\xxx\xxx\x03 

通缉输出:

['\xxx\xxx\xxx\xxx\','\xxx\xxx\xxx\xxx\','\xxx\xxx\xxx\xxx\'] 

请帮助。谢谢。

+0

'\ xxx \ xxx \ xxx \ xxx'可以包含'\ x02'或'\ x03'吗? – Tim

+0

@Tim不,它不能。 –

回答

0

您可以使用re module中的re.split(),允许您在模式上进行拆分。像filter(None,re.split(r'\\x0\d',s))应该工作。

1

我怀疑你需要说更多关于输入的可能变化,但是这个代码将工作你提到的具体情况:

line = '\x02\xxx\xxx\xxx\x03\x02\xxx\xxx\xxx\x03\x02\xxx\xxx\xxx\x03' 

if line.startswith('\x02'): 
    line = line[4:] 
if line.endswith('\x03'): 
    line = line[:-4] 
chunks = line.split('\x03\x02') 

print chunks 

>>> ('\xxx\xxx\xxx', '\xxx\xxx\xxx', '\xxx\xxx\xxx') 

如果每行开始“\ X02”和结束用“\ X03”,这种简单的方法将工作:

line = line[4:-4] 
chunks = line.split('\x03\x02') 

如果有在分隔符太多变化,我喜欢根的建议,看看re.split()方法:http://docs.python.org/2/library/re.html#re.split

+0

你的代码给出了:ValueError:invalid \ x escape –

+0

对不起,应该测试一下:)如果你在字符串前添加一个'r',就像''r'\ x02 ...''那样会阻止Python上升一个ValueError。 'r'前缀告诉Python将该字符串视为“原始”字符串,并且不会将反斜杠解释为转义字符。 – scanny