0

我正在使用以下方法拆分字符串:

my_string.split(',')

有时字符串为空,返回[''].

我的用例是接收一个空列表会更方便。在我的应用程序中,空字符串相当于没有项目。['']但是,是一个包含一个项目的列表,''

有没有办法在没有条件或额外逻辑的情况下解决这个问题?我有一个字典键分配,就像:

d = {
    'key': map(lambda x: x.strip(), my_string.split(',')),
}

保持这种方式会很酷,所有这些都直接在键分配中。

4

3 回答 3

3

列表理解比使用 map 更快更简洁

d = {
    'key': [x.strip() for x in my_string.split(',') if x],
}

map此外,您的代码将在不再返回列表的 Python3 中工作

以下是评论中提到的马特案例的几个选项。选择最适合您目的的

>>> 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']
于 2013-02-20T04:15:49.837 回答
1

有没有办法在没有条件或额外逻辑的情况下解决这个问题?

不。否则你会如何编写代码来表达你想要这样的行为?也就是说,要获得完全相同的行为,除了''变成[]

d = {
    'key': [x.strip() for x in my_string.split(',')] if my_string else []
}
于 2013-02-20T04:20:31.453 回答
0

我建议使用 filter()

filter( lambda x: len(x) > 0 , map(lambda x: x.strip(), my_string.split(',')) )
于 2013-02-20T04:15:48.107 回答