如何在split python中获取值?

时间:2013-09-09 19:56:06

标签: python

['column1:abc,def', 'column2:hij,klm', 'column3:xyz,pqr']

我希望获得:之后的值。目前,如果我拆分它也考虑了column1,column2,column3,我不想要。我只想要价值观。 这类似于字典中的键值对。唯一的不相似之处在于它是字符串列表。

我将如何拆分它?

EDITED

user_widgets = Widgets.objects.filter(user_id = user_id)

if user_widgets:
    for widgets in user_widgets:
        widgets_list = widgets.gadgets_list     //[u'column1:', u'column2:', u'column3:widget_basicLine']

        print [item.split(":")[1].split(',') for item in widgets_list]  //yields list index out of range

但是当从终端复制widgets_list值并传递它时,它正确运行。

user_widgets = Widgets.objects.filter(user_id = user_id)

if user_widgets:
    for widgets in user_widgets:
        widgets_list = [u'column1:', u'column2:', u'column3:widget_basicLine']

        print [item.split(":")[1].split(',') for item in widgets_list]  //prints correctly.

我哪里出错了?

2 个答案:

答案 0 :(得分:5)

您可以按“:”拆分项目,然后将索引为1的项目拆分为“,”:

>>> l = ['column1:abc,def', 'column2:hij,klm', 'column3:xyz,pqr']
>>> [item.split(":")[1].split(',') for item in l]
[['abc', 'def'], ['hij', 'klm'], ['xyz', 'pqr']]

答案 1 :(得分:0)

'for'循环并没有测试你的RH是否有实际数据:

li=[u'column1:', u'column2:', u'column3:widget_basicLine', u'column4']
out=[]
for us in li:
    us1,sep,rest=us.partition(':')
    if rest.strip():
        out.append(rest)     

print out    # [u'widget_basicLine']

如果您愿意,可以将其简化为列表理解:

>>> li=[u'column1:', u'column2:', u'column3:widget_basicLine', u'column4']
>>> [e.partition(':')[2] for e in li if e.partition(':')[2].strip()]
[u'widget_basicLine']

如果你有数据,你可以用逗号进一步分割:

>>> li=[u'column1:', u'column2:a,b', u'column3:c,d', u'column4']
>>> [e.partition(':')[2].split(',') for e in li if e.partition(':')[2].strip()]
[[u'a', u'b'], [u'c', u'd']]