我有两个包含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()函数本身,这让我很难过。我该如何解决这个问题?
答案 0 :(得分:0)
我会做什么:
list(set(availablesongs)-set(recentsongs))
答案 1 :(得分:0)
os.listdir()导致了我的一些问题,因为它有时会返回unicode字符串,有时则不会。函数to_unicode_or_bust用于修复其余部分。