【发布时间】:2012-04-26 08:24:03
【问题描述】:
我有两个包含 unicode 字符串的列表。我正在尝试从 availablesongs 中删除所有出现在最近歌曲中的元素。
以下代码导致问题(异常子句注释掉以进行调试):
for x in recentsongs:
#try:
availablesongs.remove(x)
#except ValueError:
# pass
当列表包含纯 ASCII 字符串时,此代码可以正常工作,但是当引入其他语言的字符时,它会失败:
UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
availablesongs.remove(x)
ValueError: list.remove(x): x not in list
错误来自 remove() 函数本身,这让我很困惑。我该如何解决这个问题?
【问题讨论】:
-
将所有内容转换为 unicode,或将所有内容转换为相同的编码。不要混合使用 unicode 和编码文本。
-
我发现一个重要的事情是 os.listdir() 并不总是返回具有正确编码的字符串。
标签: python string list unicode