2

Unicode 文字列を含む 2 つのリストがあります。私は、recentsongs にも表示される 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() 関数自体から発生しているため、困惑しています。どうすればこれを回避できますか?

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 に答える