如何在python中拆分多字符串?

如何在python中拆分多字符串?,python,Python,给定我正在使用以下形式的ctypes访问的函数返回的多字符串: "the quick brown fox\x00jumped over the lazy\00programmer\00\00" 将其转换为python列表的最佳方法是: ["the quick brown fox", "jumped over the lazy", "programmer"] 我尝试使用foo.split('\x00'),但没有成功。 sentence = "the quick brown fox\x00jum

给定我正在使用以下形式的ctypes访问的函数返回的多字符串:

"the quick brown fox\x00jumped over the lazy\00programmer\00\00"
将其转换为python列表的最佳方法是:

["the quick brown fox", "jumped over the lazy", "programmer"]
我尝试使用foo.split('\x00'),但没有成功。

sentence = "the quick brown fox\x00jumped over the lazy\00programmer\00\00"
[phrase for phrase in sentence.split("\x00") if phrase != ""]

编辑
直接从马嘴里说:

>>> sentence = "the quick brown fox\x00jumped over the lazy\00programmer\00\00"
>>> [phrase for phrase in sentence.split('\x00') if phrase != ""]
['the quick brown fox', 'jumped over the lazy', 'programmer']

Python 2.6.1 (r261:67515, Jul  9 2009, 14:20:26) 

使用过滤器将是解决此问题的一种优雅方法

>>> s = "the quick brown fox\x00jumped over the lazy\00programmer\00\00"  
>>> filter(None, s.split('\x00'))  
['the quick brown fox', 'jumped over the lazy', 'programmer']

这真的很奇怪。顺便说一句,使用原始字符串没有任何帮助,这就是为什么我无法理解。
foo.split()
返回一个新字符串,并且不修改
foo
,因此您可能需要编写
foo=foo.split('\x00')
您想从
中得到什么“\0foo\0\0bar\0\0”
?两个
\0
一起终止多字符串吗?添加代码段并正确格式化的诀窍是什么?我使用了“在此处添加代码”按钮,但仍然不起作用。@musicfreak:谢谢。。。还有一个我需要学习的wiki语法:(要使用“代码”按钮,输入代码,选择它,然后按下按钮。感谢所有的建议-其中有几个有效,但是过滤器()版本是已签入的版本。我认为我正在使用ctypes这一事实使事情变得复杂。这是通过调用:s=create\u string\u buffer(length)foo=s[0:length]返回筛选器(None,foo.split('\x00'))返回的字符串缓冲区尝试直接使用s或s.value似乎总是在第一个NULL时被截断-分配给foo对我来说似乎是一个难题,但我想,一个行之有效的难题总比什么都没有好。干杯。在这种情况下,简单的“if短语”就行了,因为字符串是True iff nonempty.True。只是为了操作而变得冗长而已。
>>> s = "the quick brown fox\x00jumped over the lazy\00programmer\00\00"
>>> s.strip('\x00').split('\x00')
['the quick brown fox', 'jumped over the lazy', 'programmer']