書いているスクリプトのUnicodeに問題があります。私はこのサイトを含めてインターネットを精査し、多くのことを試みましたが、何が悪いのかまだわかりません。
私のコードは非常に長いですが、その抜粋を示します。
raw_results = get_raw(args)
write_raw(raw_results)
parsed_results = parse_raw(raw_results)
write_parsed(parsed_results)
基本的に、UTF-8でエンコードされたXML形式の生の結果が得られます。RAWデータの書き込みに問題はありません。しかし、解析されたデータの書き込みはそうです。したがって、問題はデータを解析する関数の内部にあると確信しています。
私はすべてを試しましたが、問題が何であるかわかりません。この単純な行でさえ、私にエラーを与えます:
def parse_raw(raw_results)
content = raw_results.replace(u'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', u'')
UnicodeDecodeError:'ascii'コーデックは位置570のバイト0xd7をデコードできません:序数が範囲(128)にありません
理想的には、Unicodeで作業でき、問題がないことを望んでいますが、Unicodeを置き換えたり無視したり、通常のテキストのみを使用したりしても問題はありません。完全なコードを提供していないことは知っていますが、仕事に関連しているため、問題があることを理解しています。しかし、これで私に助けが得られることを願っています。
編集:私のparse_raw関数の上部:
from xml.etree.ElementTree import XML, fromstring, tostring
def parse_raw(raw_results)
raw_results = raw_results.decode("utf-8")
content = raw_results.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '')
content = "<root>\n%s\n</root>" % content
mxml = fromstring(content)
Edit2 ::特殊文字がない限り、コードは正常に機能することを指摘するのは良い考えだと思います。100%英語であれば、問題ありません。外国文字やアクセント付き文字が含まれる場合は常に、問題が発生したときです。