Python2.7.2でUnicodeを処理しようとしています。あることはわかっていますが、.encode('utf-8')
追加するとエラーが発生し、追加しないとエラーが発生します。
.encode('utf-8')
Pythonに伝える方法はありますか?文字列にUnicodeを使用するだけで、物事をいじくり回す必要がない、最新の現代言語だと思いましたか?
私は知っています...python3.0はこれを行うことになっていますが、3.0は使用できず、2.7はとにかくそれほど古いものではありません...
例えば:
url = "http://en.wikipedia.org//w/api.php?action=query&list=search&format=json&srlimit=" + str(items) + "&srsearch=" + urllib2.quote(title.encode('utf-8'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 19: ordinal not in range(128)
更新.encode
すべてのコードからすべて
のステートメントを削除し# -*- coding: utf-8 -*-
てファイルの先頭に追加すると、そのすぐ下に、#!/usr/bin/python
まったく追加しなかった場合と同じように、次のようになり# -*- coding: utf-8 -*-
ます。
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py:1250: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
return ''.join(map(quoter, s))
Traceback (most recent call last):
File "classes.py", line 583, in <module>
wiki.getPage(title)
File "classes.py", line 146, in getPage
url = "http://en.wikipedia.org/w/api.php?action=query&prop=revisions&format=json&rvprop=content&rvlimit=1&titles=" + urllib2.quote(title)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 1250, in quote
return ''.join(map(quoter, s))
KeyError: u'\xf1'
私は手動で文字列を入力していません。WebサイトからHTMLとjsonを解析しています。したがって、scripts / bytestreams /それらが何であれ、すべてpythonによって作成されます。
アップデート2エラーを進めることはできますが、新しい場所で発生し続けます。Pythonが便利なスクリプトツールになることを望んでいましたが、3日間運がなかった後は、別の言語を試してみることにします。残念なことに、Pythonはosxにプリインストールされています。投稿したエラーの1つのインスタンスを修正した正解をマークしました。