python 문자열에서 HTTP 링크(URL) 탐지해서 링크생성하기 <a> 태그 이용

     

<a> 태그 없을 때
<a> 태그 있을 때

채팅어플을 만들거나 문자열을 출력하는 앱을 만들 때, 문자열에 대한 후처리를 해줘야 할 때가 있습니다. 특히 http://가 들어가 있을 때, 다른 웹페이지 링크가 포함돼있는 경우 클릭했을 때 새창에서 열리도록 하고 싶을 때가 있습니다. 일반적으로 url에 링크를 등록하려면 를 이용하는데, 문장에 url이 포함되는지 안되는지, 어느 부분이 포함되는지 모를 때는 일단 url을 찾고 나서 태그를 넣어주는 알고리즘이 필요합니다.

일단 python에서는 re라는 정규식 라이브러리를 사용해 문장에서 url을 찾을 수 있습니다.

import re
m = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$\-@\.&+:/?=]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', str1)

위에 re.findall( $1, $2) 메소드는 $2에서 정규식 $1에 매칭 되는 문장을 전부 찾아서 문자열 리스트 형태로 반환합니다. $1은 URL형태를 뽑아내는 정규식입니다.

for str_link in m:
    str1 = str1.replace(str_link, "<a href = \"" + str_link + "\" >" + str_link + "</a>")

리스트이기 때문에 for문과 replace를 사용해서 모든 url을 문장에서 <a href> 태그를 달고 치환해줍니다.
이렇게 하면 문장에 어디위치에 있던지 url만 링크를 걸 수 있습니다.

추가로 이렇게 구현하면 현재창에서 링크가 열리는데, 새창으로 열리는 옵션은 target = "_blank"를 추가하면 됩니다.

반응형

댓글

Designed by JB FACTORY