2

我有两个包含 unicode 字符串的列表。我正在尝试从也出现在最近歌曲中的可用歌曲中删除所有元素。

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

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

4

2 回答 2

0

我会做什么:

list(set(availablesongs)-set(recentsongs))
于 2012-04-14T07:00:40.443 回答
0

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

于 2012-05-04T04:36:34.650 回答