2014-12-26 2 views
0

)으로 바꾼다. 다른 HTML의 중간에 이미지 태그를 닫으려고한다. JS로 이미지를 만들고 나 자신에게 보내면 제대로 닫히지 않는다. . 나는 이것을 위해 파이썬을 사용하고있다. 이 문자열을 감안할 때Regexp가 <div><img ...></div>을 <div><img ... /></div> (파이썬에서

:

re.sub("<img(.*)(?<!/)>", "<img\\1 />", x) 

그리고 단지 이미지 :

<div><img src="/images/someImage.png" alt="Some Image"></div> 

는 어떻게 얻을 수는

<div><img src="/images/someImage.png" alt="Some Image" /></div> 

이것은 내가 지금까지 가지고 올 한 것입니다 , 그것은 작동하지만 한 번 그것을 둘러싸 기 위해 div을 추가하면, 그것은 잘못된 위치에 놓습니다 :

<div><img src="http://sh.local/images/tripAlbums/2014/thumbs/Background%20Default.jpeg"></div /> 

아시다시피, 결말 DIV는 내가 이미지 태그에 원하는 것을 가지고 있습니다.

하나의 이미지 만 표시 할 수도 있지만 더 많은 이미지가있을 수 있으므로 글로벌 re.sub과 함께 사용해야합니다.

감사합니다.

답변

2

사용이 아닌 욕심 .*?

>>> re.sub("<img(.*?)(?<!/)>", "<img\\1 />", str) 
'<div><img src="/images/someImage.png" alt="Some Image" /></div>' 

또는

또한

>>> re.sub("<img([^>]*)(?<!/)>", "<img\\1 />", str) 
'<div><img src="/images/someImage.png" alt="Some Image"/></div>' 
  • [^>]* 부정적인 (negated) 문자 클래스를 시도 할 수 있습니다.



클리너 방법

클리너와의 beautifull 방법 것은 BeautifulSoup

>>> import bs4 
>>> str='<div><img src="/images/someImage.png" alt="Some Image"></div>' 
>>> soup = bs4.BeautifulSoup(str) 
>>> soup.prettify() 
u'<div>\n <img alt="Some Image" src="/images/someImage.png"/>\n</div>' 
,691을 사용하는 것입니다 > 0 개 이상의 시간 이외의 일치

참고 정규식은 HTML 구문 분석에 적합한 도구가 아닙니다. BeautifulSoup

+0

완벽합니다. (누가 너를 떨어 뜨렸는지 단서 없음). – David

+0

@David 도와 주셔서 감사합니다. – nu11p01n73R

+0

두 번째 방법을 설명 할 수 있습니까? 나는 그것을 결코 보지 못했다. 그리고 Beautiful Soup을 꼭 확인해 보겠습니다. – David

0
s='<div><img src="/images/someImage.png" alt="Some Image"></div>' 
n=s.find('<img') 
result=s[:n+1] 
s=s[n+2:] 
n=s.find('>') 
result=result+s[:n]+"/"+s[n:] 
print result 
+0

음, 저에게 필요한 것은 모두 '?'라고 생각하면 오히려 못 생깁니다. 또한 정규 표현식을 사용하지도 않습니다. 이 작업을 수행하는 올바른 방법에 대한 다른 대답을 참조하십시오. – David

1

와 같은 html 파서를 사용할 것을 권장합니다. BeautifulSoup이 자동으로이 작업을 수행합니다.

>>> from bs4 import BeautifulSoup 
>>> s = '''<div><img src="/images/someImage.png" alt="Some Image"></div>''' 
>>> soup = BeautifulSoup(s) 
>>> soup 
<html><body><div><img alt="Some Image" src="/images/someImage.png"/></div></body></html> 
관련 문제