1

私はPythonを使用してWeibo(中国のTwitterのようなサービス)の文を処理しています。文にはいくつかの絵文字があり、対応するユニコード\ue317などがあります。文を処理するには、gbkで文をエンコードする必要があります。以下を参照してください。

 string1_gbk = string1.decode('utf-8').encode('gb2312')

ありますUnicodeEncodeError:'gbk' codec can't encode character u'\ue317'

試し\\ue[0-9a-zA-Z]{3}ましたが、うまくいきませんでした。これらの絵文字を文章でどのように一致させることができますか?

4

3 に答える 3

4

'\ue317'の部分文字列ではありませんu"asdasd \ue317 asad"-人間が読めるUnicode文字表現であり、正規表現と一致させることはできません。正規表現はrepr(u'\ue317')

于 2012-06-05T01:22:26.597 に答える
2

試す

string1_gbk = string1.decode('utf-8').encode('gb2312', 'replace')

出力する必要がありますか?それらの絵文字の代わりに。

Pythonドキュメント-PythonWiki

于 2012-06-05T00:55:28.180 に答える
1

バックスラッシュが正規表現構文の特殊なエスケープ文字であることが原因である可能性があります。以下は私のために働いた:

>>> test_str = 'blah blah blah \ue317 blah blah \ueaa2 blah ue317'
>>> re.findall(r'\\ue[0-9A-Za-z]{3}', test_str)
['\\ue317', '\\ueaa2']

ue317前に円記号がない最後のに誤って一致しないことに注意してください。もちろん、re.sub()これらの文字列を置き換える場合に使用します。

于 2012-06-05T00:57:51.600 に答える