我想拆分内部字符串以获取每个项目,字符串是[()]结构,要处理的对象可能是这样的:
[(u'|name1|name2|name3|123|124|065|',)]
或
[(u'|name1|',)]
或
[(u'')]
甚至
false
要从字符串中获取项目,我只需要:
mystring.split('|')
但我认为我最后的方法很丑陋且容易出错:
mylist[0][0].split('|')
如何以干净和pythonic的方式获得物品清单?
答案 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('|')