Python:列表理解使用unicode验证

时间:2013-04-24 18:22:29

标签: python list-comprehension

假设我有一个包含字符串的列表:ta,fa,ba,ut,我们将列表调用为some_list = ['ta', 'fa', 'ba', 'ut']

我想做的是,伪代码:

for x in some_list:
    if unicode(x, 'utf-8') == another_unicoded_string:
       do something:

但我想用列表理解方式来做pythonic方式:

所以这就是我的做法,但这并不是真的有效:

if [x for x in some_list if unicode(x, 'utf-8') == 'te']:

在上面的情况下它不应该匹配所以不应该根据我写的内容真正进入循环它不会以任何方式进入语句:

2 个答案:

答案 0 :(得分:0)

尝试:

for x in (x for x in some_list if unicode(x, 'utf-8') == 'te'):
    do_something

或(效率较低 - 感谢jamaylak提出的建议),

for x in [x for x in some_list if unicode(x, 'utf-8') == 'te']:
    do_something

答案 1 :(得分:0)

您正在做的是返回已过滤的列表。所以我的猜测是你正试图做这样的事情。

[do_something(x) for x in some_list if unicode(x, 'utf-8') == u'te']

稍微冗长一点:

>>> some_list
['ta', 'fa', 'ba', 'te', 'ut', 'te']
>>> [x for x in some_list if unicode(x, 'utf-8') == u'te']
['te', 'te']
>>> [unicode(x) for x in some_list if unicode(x, 'utf-8') == u'te']
[u'te', u'te']