2015-01-19 2 views
1

정렬되지 않은 목록이 있으면 특수한 HTML 화살표가 사용되고 있는지 확인해야합니다 (라텍스 화살표로 바꿔야 함). lxml.html이 필요합니다. lxml.html 요소의 텍스트에서 특수 HTML 문자 검색

나는 주변에 땜질했다 그러나 나는 다음과 같은 번번이 수 :

import lxml.html 

my_string = "<li>I have a dream &#8594; Hello!</li>" 
elem = lxml.html.fromstring(my_string) 

if "&#8594;" in my_string: # True 
    print("foo") 

if "&#8594;" in elem.text: # False 
    print("bar") 

나는 두 번째의 경우 조건이 False로 평가 이유를 이해 할 수없는입니다. elem.text에 (& # 8594;) "→"이 있는지 어떻게 확인할 수 있습니까?

답변

1

당신은 의 유니 코드 표현을 검색해야합니다

>>> s = u"→" 
>>> s 
u'\u2192' 

>>> import lxml.html 
>>> 
>>> my_string = "<li>I have a dream &#8594; Hello!</li>" 
>>> elem = lxml.html.fromstring(my_string) 
>>> 
>>> if u'\u2192' in elem.text: 
...  print("bar") 
... 
bar 
+0

감사! 그리고이 문제를 겪었습니다 : https://docs.python.org/3/library/html.entities.html – yang5

1

... 당신은 문자를 대체하기 위해 찾고 있다면, 수입은 다음과 같이 "다시"

import re 
re.sub(u'\u2192', '&rarr;', my_string)