5

スウェーデン語の Web ページから情報を抽出しています。このページでは、öäå のような文字を使用しています。

私の問題は、情報を印刷すると öäå がなくなってしまうことです。

Beautiful Soupを使って情報を抽出しています。location = re.sub(r'([^\w])+', '', location)問題は、文字以外のすべてを削除するなど、抽出した文字列に対して一連の正規表現を実行することだと思います。これより前に、Beautiful Soup が文字列をエンコードして、öäå が /x02/ のような 16 進数の値になったと思います。

したがって、私が正しければ、正規表現は öäå を削除しています。16 進文字の後に残す必要があるのは正規表現の後の x だけですが、私のページには öäå の代わりに x がないため、これは少しの理論は多分正しくない?とにかく、それが正しいか間違っている場合、これをどのように解決しますか? 後で抽出した情報を自分の Web ページに出力するときに、Google アプリ エンジンで self.response.out.write() を使用します (問題の解決に役立つかどうかはわかりません)。

編集: スウェーデンのサイトのエンコーディングは utf-8 で、私のサイトのエンコーディングも utf-8 です。EDIT2:スウェーデン語にはISO-8859-10を使用できますが、Google Chromeによると、この特定のサイトのエンコーディングはUnicode(utf-8)です

4

2 に答える 2

9

常に Unicode で作業し、必要な場合にのみエンコードされた表現に変換します。

この特定の状況では、ユニコード文字に一致するre.Uフラグも使用する必要があります。\w

#coding: utf-8

import re

location = "öäå".decode('utf-8')
location = re.sub(r'([^\w])+', '', location, flags=re.U)

print location # prints öäå
于 2012-04-15T19:31:01.627 に答える
0

各ステップの前後に文字列をダンプできると助かります。

re.UNICODE最初の値を確認してください。これを参照してください

于 2012-04-15T19:32:29.247 に答える