1

みんな。

私の研究プロジェクトのために、いくつかの Web ページを集めました。

例: http://git.gnome.org/browse/anjuta/commit/?id=d17caca8f81bb0f0ba4d341d6d6132ff51d186e3

上記の Web ページをご覧のとおり、コミッターの名前は英語ではありません。

他の Web ページにも、コミッターの名前が英語以外のさまざまな言語で書かれています。

次のコードは、コミッター名で処理するためのものです。

import csv
import re
import urllib

def get_page (link):
    k = 1
    while k == 1:
        try:
            f = urllib.urlopen (link)
            htmlSource = f.read()
            return htmlSource
        except EnvironmentError:
            print ('Error occured:', link)
        else:
            k = 2
    f.close()

def get_commit_info (commit_page):
    commit_page_string = str (commit_page)


    author_pattern = re.compile (r'<tr><th>author</th><td>(.*?)</td><td class=', re.DOTALL)
    t_author = author_pattern.findall (commit_page_string)

    t_author_string = str (t_author)
    author_point = re.search (" &lt;", t_author_string)
    author = t_author_string[:author_point.start()]

    print author

git_url = "http://git.gnome.org/browse/anjuta/commit/?id=d17caca8f81bb0f0ba4d341d6d6132ff51d186e3"
commit_page = get_page (git_url)
get_commit_info (commit_page)

「print author」の結果は次のとおりです。

\xd0\x9c\xd0\xb8\xd1\x80\xd0\xbe\xd1\x81\xd0\xbb\xd0\xb0\xd0\xb2 \xd0\x9d\xd0\ xb8\xd0\xba\xd0\xbe\xd0 \xbb\xd0\xb8\xd1\x9b

名前を正確に印刷するにはどうすればよいですか?

4

1 に答える 1

0

まあ...これはあなたが望むことをします

author = 'Мирослав Николић'
print author.decode('utf8') # Мирослав Николић

ただし、エンコーディングがUTF8でない場合も機能しません...

ほとんどのものはutf8を使用します。多くの場合。

Unicode は、理解するには複雑なものです。'author' は、バイトを含む文字列オブジェクトです。これらのバイトには、それらのバイトが何を表しているかを示す情報はありません。絶対にありません。このバイト文字列が UTF8 のコード ポイントであることを Python に伝える必要があります。遭遇した各バイトについて、UTF8 コード表を調べて、これが表す UTF8 Unicode グリフを確認してください。

メタ タグを調べることで、各ページのエンコーディングを検出できます。html5 では、次のようになります。

<meta charset="utf-8">. 
于 2012-05-18T12:39:50.117 に答える