Pythonic解包内部字符串并处理它的方法

时间:2014-01-17 16:00:57

标签: python

我想拆分内部字符串以获取每个项目,字符串是[()]结构,要处理的对象可能是这样的:

[(u'|name1|name2|name3|123|124|065|',)]

[(u'|name1|',)]

[(u'')]

甚至

false

要从字符串中获取项目,我只需要:

mystring.split('|')

但我认为我最后的方法很丑陋且容易出错:

mylist[0][0].split('|')

如何以干净和pythonic的方式获得物品清单?

3 个答案:

答案 0 :(得分:1)

先做一些检查。

如果字符串可以嵌套在不恒定的深度,只需将提取包装在一个循环中,直到它成为basetring的实例。

def split(container):
    if not container:
        return []

    return container[0][0].split('|')

答案 1 :(得分:1)

我同意你尽力而为,但如果你只是想要一种不同的(等效的)方式,

from operator import itemgetter
f = itemgetter(0)
f(f(mylist)).split('|')

答案 2 :(得分:1)

我认为你的方法是正确的。

但是split('|')结果的第一个和最后一个元素呢?它们是空的,因为你的字符串以'|'开头和结尾。

你可以使用列表理解。

[name for name in mylist[0][0].split('|') if name]

或之前剥离字符串:

   mylist[0][0].strip('|').split('|')