1

次のコードがあります

inf = codecs.open(inPath , encoding='utf-8')
outf = codecs.open(outPath, encoding='utf-8', mode='w')
old = u'’;'
new = u'’&#59;'
for line in inf:
    line = line.replace(old,new)
    asc = line.encode('ascii', 'xmlcharrefreplace')    
    outf.write(asc)
    # print asc
inf.close()
outf.close()

これは、数値形式を使用して、スマート クォートやアクセント付き文字などを (正しく) html エンティティ形式に変換します。変換します

<p>Dreams like: “Someday I’ll travel to…; someday I’ll write a book;

の中へ

<p>Dreams like: &#8220;Someday I&#8217;ll travel to&#8230;; someday I&#8217;ll write a book; 

これはすべて正しいです。

ただし、さらに下流のコード&#8230;;では、真ん中に があり、二重のセミコロンが削除され、有効なエンティティがないことを訴えます。このコードを変更することはできません。

私のコードからわかるように、エンティティの後にセミコロンが続く 1 つのケースを見つけました。ソース内のすべてのセミコロンを置き換えたくありません。

コード ポイントが 127 を超える UTF-8 文字に続くセミコロンを検出するにはどうすればよい&#59;ですか? ありがとう。

4

1 に答える 1