私は Python でデコードとエンコードに取り組んできましたが、問題を解決する方法がわかりません。明らかに utf-8 でコード化されているxml テキスト ファイル ( sample ) をループし、Beautiful Soup を使用して各ファイルを解析し、ファイル内の文に 2 つの異なる単語リストから 1 つ以上の単語が含まれているかどうかを確認しています。xml ファイルは 18 世紀のものであるため、xml にある em ダッシュを保持する必要があります。以下のコードはこれを問題なく実行しますが、削除したい厄介なボックス文字も保持しています。ボックスキャラはこのキャラだと思います。
(上記のサンプル ファイルの 3682 行目に、削除したい文字の例があります。この Web ページでは、文字は「or」パイプのように見えますが、Komodo で xml ファイルを読むと、ボックスをコピーして検索エンジンに貼り付けようとすると、「or」パイプのように見えますが、コンソールに出力すると、その文字は空のボックスのように見えます)。
要約すると、以下のコードはエラーなしで実行されますが、削除したい空のボックス文字が出力されます。
for work in glob.glob(pathtofiles):
openfile = open(work)
readfile = openfile.read()
stringfile = str(readfile)
decodefile = stringfile.decode('utf-8', 'strict') #is this the dodgy line?
soup = BeautifulSoup(decodefile)
textwithtags = soup.findAll('text')
textwithtagsasstring = str(textwithtags)
#this method strips everything between anglebrackets as it should
textwithouttags = stripTags(textwithtagsasstring)
#clean text
nonewlines = textwithouttags.replace("\n", " ")
noextrawhitespace = re.sub(' +',' ', nonewlines)
print noextrawhitespace #the boxes appear
を使用してボックスを削除しようとしました
noboxes = noextrawhitespace.replace(u"\u2610", "")
しかし、Python はエラー フラグをスローしました。
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 280: ordinal not in range(128)
xmlファイルからボックスを削除する方法を知っている人はいますか? 他の人が提供できる助けに感謝します。