我目前做這與他們的HTML實體數等同替換擴展ASCII字符:如何在Python中將擴展ASCII轉換爲HTML實體名稱?
s.encode('ascii', 'xmlcharrefreplace')
我想什麼做的是轉換爲HTML實體名稱等同於(即©
代替的©
)。下面的這個小程序顯示了我正在嘗試做的失敗。有沒有辦法做到這一點,除了做一個查找/替換?
#coding=latin-1
def convertEntities(s):
return s.encode('ascii', 'xmlcharrefreplace')
ok = 'ascii: [email protected]#$%^&*()<>'
not_ok = u'extended-ascii: ©®°±¼'
ok_expected = ok
not_ok_expected = u'extended-ascii: ©®°±¼'
ok_2 = convertEntities(ok)
not_ok_2 = convertEntities(not_ok)
if ok_2 == ok_expected:
print 'ascii worked'
else:
print 'ascii failed: "%s"' % ok_2
if not_ok_2 == not_ok_expected:
print 'extended-ascii worked'
else:
print 'extended-ascii failed: "%s"' % not_ok_2
這就是爲什麼我說「除了查找/替換」,換句話說,我不想構建128個字符的字典。這個解決方案適用於我發佈的代碼,雖然 – 2010-07-22 20:03:25
嗯,我只是適應我的代碼使用其他人提到的'htmlentitydefs'。現在你不必編譯它:) – 2010-07-22 20:09:51
看起來更好...可能需要添加一些ASCII碼檢查,因爲我不想用「<」替換爲「<」 – 2010-07-22 20:17:45