私はユニコード文字列を含む2つのリストを持っています。私もrecentsongsに表示availablesongsからすべての要素を削除しようとしている。ユニコード文字列を含むリストでremove()を呼び出すときにPythonがUnicodeWarningを出す
次のコードは、(例外条項は、デバッグのためにコメントアウト)問題を引き起こしている:
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()関数自体から発生しています。これを回避するにはどうしたらいいですか?私はどうなるのか
[完全な回答を投稿するには怠惰です] –
すべてをユニコードに変換するか、すべてを同じエンコードに変換します。ユニコードとエンコードされたテキストを混在させないでください。 – agf
[ありがとう...](このページは、http://stackoverflow.com/questions/10149850/python-giving-unicodewarning-when-calling-remove-on-a-list-containing-unicode#comment13016466_10149850) ://farmdev.com/talks/unicode/)本当に私の問題を解決するのに役立ちました。関数 "to_unicode_or_bust"が機能し、あらかじめ配列全体を反復処理する追加関数を書きました。 – okw