pythonでhtmlの文字参照をなんとかする。
htmlの文字参照ってやつ。めんどいよね。 面倒さのあまりlt、gt、nbsp、あとampあたりだけreplace掛けて良しとしちゃってたりしたんだけどさ。 標準ライブラリのリファレンス見てたら、htmlentitydefsなんて使えそうなものがある。
という訳で使ってみた。 あんま短いコードにならなかった。 がっかり。
import htmlentitydefs # python3.xならhtml.entities import re def unescape(string): for x in re.findall('&[a-zA-Z]+?;', string): try: rep = htmlentitydefs.name2codepoint[x[1:-1]] except KeyError: pass else: rep = unichr(rep) # python3.xなら普通にchr(rep)でおっけー。 string = string.replace(x, rep) return string print unescape('test string') print unescape('<tag in <tag>>') print unescape('dummy&tag;')
もっと短く書く方法あったら教えてくらはい。
あ、そうそう。 nbspの結果がなんか不思議なことになるので注意。 ノーブレークスペースってやつで、普通のスペースとは違うみたいね。詳しくはwikipediaでもどうぞ。 これになっちゃうと困る場合は、個別にreplaceでもしてください。
string = string.replace(' ', ' ')
みたいな感じで済むから、まあそんな労力にはならんでしょ。