这是python代码
languages = ["HTML", "JavaScript", "Python", "Ruby"]
print filter(lambda x: x == "Python",languages)
输出是:
[u'Python']
来自哪里u
以及如何避免它。
所需输出:
['Python']
更新::
我在 code academy 上尝试过这个。我猜 dere 是他们软件中的一个错误。
您的输入包含unicode
文本,而不是str
文本。u''
表示unicode
文字。
这可能是正常的,并且完全取决于您从languages
何处获得列表。否则一切正常。
您链接到的 CodeAcademy 练习实际上已损坏。它向您显示 Pythonstr
输入,但它的输出使用unicode
. 您需要将其报告为错误。
您可以通过将所有内容映射到 a 来解决该错误str
:
print filter(lambda x: x=='Python', map(str, languages))
或通过将输出映射到:filter
str()
print map(str, filter(lambda x: x=='Python', languages))
这适用于这种情况,因为输入仅使用 ASCII 字符。通常,您会通过指定编码unicode
来显式编码,请参阅Python Unicode HOWTO。str
通过以下方式进行直接转换:
languages = ["HTML", "JavaScript", "Python", "Ruby"]
flt = filter(lambda x: x == "Python",languages)
print [str(X) for X in flt]
输出
['Python']
是的,简单str()
的就是做转换。
u
代表 unicode,您可以将其转换为普通字符串str(filter(...))