Python在包含unicode字符串的列表上调用remove()时给出UnicodeWarning

时间:2012-04-14 00:09:21

标签: python string list unicode

我有两个包含unicode字符串的列表。我正在尝试删除同样出现在recentsongs中的可用歌曲中的每个元素。

以下代码导致问题(为调试注释掉了异常子句):

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()函数本身,这让我很难过。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我会做什么:

list(set(availablesongs)-set(recentsongs))

答案 1 :(得分:0)

os.listdir()导致了我的一些问题,因为它有时会返回unicode字符串,有时则不会。函数to_unicode_or_bust用于修复其余部分。