3

私は今、中国語の文字に関する問題に遭遇しました。Beautifulsoup を使用してデータを抽出し、抽出したデータの名前を使用してフォルダーを作成したいと考えています。データの好み:

<A href="love">星座(1824)</A>

「星座(1824)」を抽出したいので、好きです

soup.find('a',href='love')

しかし、コンソールでは、それが出てきます:

ÐÇ×ù(1824)

ソースの先頭に「# - -coding:utf-8 - -」を使用しています。それは何らかのエンコーディングの問題であるに違いありません。英語以外でのPythonの動作について、誰かが良い資料を提供できますか?

「星座(1824)」という名前のフォルダを作成したい:

if not os.path.exists(dir_name):
        os.mkdir('./pic/'+dir_name) 

「ÐÇ×ù(1824)」という名前のフォルダが存在するのを見つけたとき、なぜそれがまだ出てくるのか:

OSError: [Errno 17] File exists: './vguagua_pic/\xc3\x90\xc3\x87\xc3\x97\xc3\xb9(1824)'

どうも

4

2 に答える 2

3

.py スクリプトが UTF-8 で記述されていても、Web ページがそうでない場合、解析されたテキストが正しくない可能性があります。

Web ページのエンコーディングは実際には GB-2312 (または GB-18030) ですが、BeautifulSoup は Web ページのエンコーディングを ISO-8859-1 と誤って推測し、その誤った仮定で UTF-8 に変換して文字化けを引き起こしました。以下を確認できます。

>>> b'\xc3\x90\xc3\x87\xc3\x97\xc3\xb9'.decode('utf8').encode('latin1').decode('gb2312')
'星座'

Beautiful Soup のドキュメント(および中国語の中文from_encoding="gb2312"档) に記載されているように、( bs4 の場合) またはfromEncoding="gb2312"(3.x の場合) を BeautifulSoup コンストラクターに追加して、エンコーディングを強制することができます。

于 2012-06-25T06:14:22.920 に答える
0

あなたの問題は、コンソールが中国語の文字を表示できない可能性が最も高いです.

次のコードを使用して、Win7でこれを試しました。

# -*- coding: utf-8 -*-
import os
os.mkdir(u'星座(1824)')

dos コンソールでは漢字が 2 つのボックスとして表示されますが、ここに貼り付けると正しく表示されます。

2012-06-25  07:59    <DIR>          星座(1824)

また、Windows エクスプローラーでも正しく表示されます。

于 2012-06-25T06:06:27.120 に答える