1

私のプロジェクトでは、xml ファイルを解析する必要があります。これを行うために、lxml を使用します。解析する必要があるファイルには cp1251 コーディングが含まれていますが、もちろん、lxml を使用して解析するには、それを utf-8 にデコードする必要があり、その方法がわかりません。これについて何かを検索しようとしましたが、すべてのソリューションは Python 2.7 用であるか、機能しませんでした。次のようなものを書き込もうとすると

inp = open("business.xml", "r", encoding='cp1251').decode('utf-8')

また

inp.decode('utf-8')

それが取得します

builtins.AttributeError: '_io.TextIOWrapper' object has no attribute 'decode'

私はPython 3.2を持っています。どんな助けでも結構です、ありがとう。

4

1 に答える 1

4

open()ファイルをデコードします。すでに Unicode データを受信して​​います。

ファイルをバイナリモードで開き、XML パーサーにエンコードを処理させるlxml必要があるためです。これを自分で行わないでください。

with open("business.xml", "rb") as inp:
    tree = etree.parse(inp)

XML ファイルには、使用するエンコーディングを示すヘッダーが含まれており、パーサーはそれに合わせて調整します。ヘッダーが欠落している場合、パーサーは安全に UTF-8 を想定できます。

于 2013-04-21T12:08:04.300 に答える