2011-02-18 1 views
3

가능한 중복 : HTML 소스에서
Convert XML/HTML Entities into Unicode String in Python파이썬에서 ":"과 같은 문자를 ":"로 변환하려면 어떻게해야합니까?

같은 문자의 톤이있다 "& # 58;" 또는 "& # 46;" (& #과 숫자 사이에 공백을 두거나 문자를 ":"또는 "."로 간주해야합니다.) 제 질문은 어떻게 파이썬으로 변환해야합니까? 방법 또는 무엇인가 내장되어 있습니까?

누군가가 나를 도울 수 있기를 바랍니다. 감사합니다

답변

5

여기이 대부분의 개체 정의를 처리합니다 같이 정규식 (가정 파이썬 2.X를

>>> import re 
>>> re.sub("&#(\d+);",lambda x:unichr(int(x.group(1),10)),": or .") 
u': or .' 
+0

마크 : 감사합니다! – Shane

+0

@YOU 샘플을 표시 할 수 있습니까? 여기에 텍스트를 입력 할 수 있습니까? 죄송합니다, Python에 익숙하지 않습니다. –

2

뭔가를 신속하고 더러운 방법이 라이브러리에 내장되지 않았거나 잘 모르겠지만,). 10 진수, 16 진수 및 htmlentitydefs에있는 명명 된 엔터티를 처리합니다.

import re 
from htmlentitydefs import name2codepoint 
EntityPattern = re.compile('&(?:#(\d+)|(?:#x([\da-fA-F]+))|([a-zA-Z]+));') 
def decodeEntities(s, encoding='utf-8'): 
    def unescape(match): 
     code = match.group(1) 
     if code: 
      return unichr(int(code, 10)) 
     else: 
      code = match.group(2) 
      if code: 
       return unichr(int(code, 16)) 
      else: 
       code = match.group(3) 
       if code in name2codepoint: 
        return unichr(name2codepoint[code]) 
     return match.group(0) 

    if isinstance(s, str): 
     s = s.decode(encoding) 
    return EntityPattern.sub(unescape, s) 
관련 문제