我正在使用:
分割字符串my_string.split(',')
有时字符串为空,返回['']
。
我的用例是这样接收空列表会更方便。在我的应用程序中,空字符串相当于没有项目。但是,['']
是一个包含一个项''
的列表。
有没有办法可以在没有条件或额外逻辑的情况下解决这个问题?我有一个字典键分配,如:
d = {
'key': map(lambda x: x.strip(), my_string.split(',')),
}
保持这种方式很酷,都直接在关键任务中完成。
答案 0 :(得分:3)
使用地图
,列表理解更快,更简洁d = {
'key': [x.strip() for x in my_string.split(',') if x],
}
此外,您的代码将在Python3中工作,其中map
不再返回列表
以下是Matt在评论中提到的案例选项。选择最适合您目的的
>>> my_string = 'foo,,,bar'
>>> [x.strip() for x in my_string.split(',') if x]
['foo', 'bar']
>>> [x.strip() for x in my_string.split(',') if my_string]
['foo', '', '', 'bar']
编写第二种备选方案的更明确的方法是
>>> [x.strip() for x in my_string.split(',')] if my_string else []
['foo', '', '', 'bar']
答案 1 :(得分:1)
有没有办法可以在没有条件或额外逻辑的情况下解决这个问题?
没有。你怎么写代码传达你想要这样的行为?也就是说,要获得完全相同的行为,除了将''
转换为[]
:
d = {
'key': [x.strip() for x in my_string.split(',')] if my_string else []
}
答案 2 :(得分:0)
我建议使用filter()
filter( lambda x: len(x) > 0 , map(lambda x: x.strip(), my_string.split(',')) )