반응형
목표는 폴더구조를 변경함에 따라 데이터베이스에 있는 /image를 지우는 것이다. 먼저 "/image" -> ""로 replace할 경우 우 파일 이름에 image가 포함 되어 있는 경우 거기까지 바뀔수 있으니 "/image/ -> "/"으로 바뀌게 짰다.
item = '<div><p><img alt="2021+우리동네돌봄단+모집공고_21.3.8수정.pdf_page_1.jpg" src="static/image/hire_bbs/content/sf3al41h477xcp2b1ws5jijl9ul3qf.jpg"><br style="clear: both;"><img alt="2021+우리동네돌봄단+모집공고_21.3.8수정.pdf_page_2.jpg" src="static/image/hire_bbs/content/xax3sr830vhelv1ptfxql939zr5f5r.jpg"><br style="clear: both;"><img alt="2021+우리동네돌봄단+모집공고_21.3.8수정.pdf_page_3.jpg" src="static/image/hire_bbs/content/9klbr3pc5lwgr98x1y9mdq5fhm8btk.jpg"><br style="clear: both;"><img alt="2021+우리동네돌봄단+모집공고_21.3.8수정.pdf_page_4.jpg" src="static/image/hire_bbs/content/do94dcmhjtghc0345ovdvubnltod1a.jpg"><br style="clear: both;"><img alt="2021+우리동네돌봄단+모집공고_21.3.8수정.pdf_page_5.jpg" src="static/image/hire_bbs/content/aryi6vklkngzs5kiienm677k94cvxj.jpg"><br style="clear: both;"><img alt="2021+우리동네돌봄단+모집공고_21.3.8수정.pdf_page_6.jpg" src="static/image/hire_bbs/content/3yfjm4e5bbr1e25a9hb1z69jp3kuoc.jpg"><br style="clear: both;"> </p></div>'
pattern = re.compile('src="(static/image/[^"]*)"')
m = pattern.search(item)
while m != None:
print(m.group(1) + " to " + m.group(1).replace("/image/", "/"))
item = item[:m.start()] + m.group(0).replace("/image/", "/") + item[m.end():]
m = pattern.search(item)
print(item)
방법은 간단하다.. 자바로 짰을때는 StringBuilder로 스트림으로 넣어주면서 만들었는데, 파이썬의 경우는 m.start(), m.end()가 매치된 문자열에 대한 위치를 반환한다. 따라서 해당 부분을 슬라이싱해서 변환해줘서 넣어주면 된다, 여기서 m이 반환하는 위치를 매칭된 문자열이지 그룹에 대한 위치를 반환하지 않으므로, 매칭 된 문자열을 뜻하는 group(0)에서 replace된 결과를 넣어준다.
※ 여기서는 바꾼 결과값이 다시 매칭이 안되어서 정상적으로 작동하지만 만약 바뀐 값이 다시 매칭 되는 경우에는 pattern.search(item, [검색 시작할 위치])로 바꿔주어야 한다. m.end()는 매칭된 끝부분 위치를 의미하는데, 만약 replace로 값을 수정하여 item의 길이가 바뀔 경우 pos로 바뀌기 때문에 [검색 시작할 위치]를 잘 계산해서 넣어주면 된다.
원래 방법을 찾아보면 sub메소드를 써서 많이 하는것 같은데.. 내가 사용하는게 미숙해서 그런지 sub로 하면 매칭된 부분 전부가 특정 하나의 값으로 몽땅바껴버려서 while문으로 하나씩 바꾸는 방법을 찾아서 짜보았다.
반응형
'Python' 카테고리의 다른 글
파이썬 유튜브 영상 정보 다운로드하기 pytube (0) | 2022.06.20 |
---|---|
Python smtpllib를 이용한 이메일 보내기 (0) | 2022.03.10 |
pymysql 특수문자 이모티콘 에러 발생 해결법 (0) | 2021.05.18 |
파이썬 Turtle을 사용해서 다양한 도형 그려보기 (1) | 2021.04.21 |
numpy 정리 (0) | 2021.03.12 |