Ваши данные содержат unicode
текст, а не str
текст. u''
обозначает буква unicode
.
Это, вероятно, нормально, и полностью зависит от того, где вы получили свой languages
список от. В остальном .
Упражнение CodeAcademy, на которое вы ссылаетесь, фактически broken. Он показывает вам вход Python str
, но он использует unicode
. Вы должны сообщить об этом как об ошибке.
Вы можете обойти эту ошибку, отображая все к str
:
print filter(lambda x: x=='Python', map(str, languages))
или путем отображения вывода из filter
в str()
:
print map(str, filter(lambda x: x=='Python', languages))
, который работает для этом случае потому что на входе используются только символы ASCII. Обычно вы кодируете unicode
в str
явно, указав вместо этого кодировку, см. Python Unicode HOWTO.
Это, безусловно, происходит от всего, что вы здесь показали. Ваш примерный код дает '['Python']'. – delnan
'u' означает, что выход представляет собой строку в Юникоде. Почему вы хотите избежать этого? – BrenBarn
Обратите внимание, что при использовании 'filter()' с 'lambda' вам будет лучше [понимание списка] (http://www.youtube.com/watch?v=pShL9DCSIUw). Например: '[x для x в языках, если x ==" Python "]'. –