['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.
我哪里出错了?
答案 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']]