0

这是python代码

languages = ["HTML", "JavaScript", "Python", "Ruby"]
print filter(lambda x: x == "Python",languages)

输出是:

[u'Python']

来自哪里u以及如何避免它。

所需输出:

['Python']

更新::

我在 code academy 上尝试过这个。我猜 dere 是他们软件中的一个错误。

4

3 回答 3

1

您的输入包含unicode文本,而不是str文本。u''表示unicode文字。

这可能是正常的,并且完全取决于您languages何处获得列表。否则一切正常

您链接到的 CodeAcademy 练习实际上已损坏。它向您显示 Pythonstr输入,但它的输出使用unicode. 您需要将其报告为错误。

您可以通过将所有内容映射到 a 来解决该错误str

print filter(lambda x: x=='Python', map(str, languages))

或通过将输出映射到:filterstr()

print map(str, filter(lambda x: x=='Python', languages))

这适用于这种情况,因为输入仅使用 ASCII 字符。通常,您会通过指定编码unicode来显式编码,请参阅Python Unicode HOWTOstr

于 2013-02-25T20:29:36.677 回答
0

通过以下方式进行直接转换:

languages = ["HTML", "JavaScript", "Python", "Ruby"]
flt = filter(lambda x: x == "Python",languages)
print [str(X) for X in flt]

输出

['Python']

是的,简单str()的就是做转换。

于 2013-02-25T20:46:17.880 回答
-1

u代表 unicode,您可以将其转换为普通字符串str(filter(...))

于 2013-02-25T20:31:05.427 回答