Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- golang
- Java
- 주키퍼
- 코드워
- 알고리즘
- docker
- redis
- DP
- 리눅스
- Go언어
- boj
- dynamic programming
- Linux
- 파이썬
- go
- 동적프로그래밍
- scala
- 스칼라
- programmers
- OOM
- Python
- gradle
- HBase
- 튜토리얼
- zookeeper
- 자바
- 문제풀이
- 프로그래머스
- codewars
- leetcode
Archives
- Today
- Total
파이문
[Python] xn-- 과 같이 시작하는 URL 을 사람이 볼 수 있는 문자로 변경하기 본문
728x90
xn-- 과 같이 시작하는 URL 을 사람이 볼 수 있는 문자로 변경하기
URL 가지고 놀다 보면 xn-- 으로 시작하는 문자를 볼 수 있다. 이를 punycode 라고 하는데 알아 보기가 힘들어서 파이썬으로 간단하게 사람이 볼 수 있는 (human readable) 문자로 변경 가능한 예제를 작성하였다.
아래 처럼 idna 로 decode 하면 된다. 그 전에 해당 문자열은 반드시 punycode 여야 하므로 netloc 만 따로 떼서 진행해야 한다.
from urllib.parse import urlparse
def get_human_readable_text(org):
url = urlparse(org)
if url.scheme != "":
return url.netloc.encode("utf8").decode("idna")
else:
return url.path.encode("utf8").decode("idna")
if __name__ == '__main__':
# 전체 원본 url 혹은 path, query 까지 보고 싶으면 함수 리턴 값을 수정하면 된다.
print(get_human_readable_text("xn--o39ap20a1tj.xn--3e0b707e"))
print(get_human_readable_text("http://xn--o39ap20a1tj.xn--3e0b707e"))
ref
퓨니코드 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 퓨니코드(Punycode)는 유니코드 문자열을 호스트 이름에서 허용된 문자만으로 인코딩하는 방법으로, RFC 3492에 기술되어 있다. 퓨니코드는 유니코드가 지원하는 모든 언어로 국제화 도메인을 쓸 수 있게 한 IDNA의 일부로, 변환은 전적으로 웹 브라우저와 같은 클라이언트에서 이루어진다. 이 과정은 ASCII 문자 집합으로 표시할 수 없는 도메인 이름의 각 부분마다 따로 일어나고, 변환된 퓨니코드 문자열에는 예약된 접
ko.wikipedia.org
'TIL' 카테고리의 다른 글
[Ansible] 디렉토리 생성 하기 (0) | 2020.09.17 |
---|---|
[Java] FailSafe 를 사용한 Java Retry 예제 (0) | 2019.09.24 |
[Scala] 스칼라에서 for loop 2개 동시에 순회하기 (0) | 2019.05.09 |
[Scala] 자바 컬렉션 스칼라에서 사용하기 (0) | 2019.05.09 |
[C++] C++가 상수의 데이터형을 결정하는 방법 (0) | 2017.02.21 |
Comments