テキストに名前のないエンティティが数値でコード化されているように見える場合は、最初にxmlエンティティ定義(アンパサンド、ハッシュ、数字、セミコロン)を含むバイト文字列をUnicodeに変換できます。
import re
xed_re = re.compile(r'&#(\d+);')
def usub(m): return unichr(int(m.group(1)))
s = 'ã, ن, ش'
u = xed_re.sub(usub, s)
ターミナルエミュレータが任意のUnicodeグリフを表示できる場合は、が表示されprint u
ます
ã, ن, ش
いずれの場合も、必要に応じて、元のREを使用できます。誤ってエンティティを「キャッチ」することはなく、ASCII文字、数字、およびリストした句読文字のカップルのみを使用できます。(それが本当に必要なものかどうかはわかりませんが、たとえば、アクセント付きの文字ではなく、ASCII文字だけを使用するのはなぜですか?-しかし、それが必要な場合は機能します)。
数値コード化されたエンティティに加えて名前付きエンティティがある場合は、別の回答で推奨されている標準ライブラリモジュールを適用することもできます(ただし、Latin-1コードポイントにマップされる名前付きエンティティのみを扱います)。htmlentitydefs