ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] Unicode에 관해서.
    프로그래밍/파이썬 2022. 12. 23. 21:27
    반응형

    유니코드 때문에 머리가 아프다. 한글이 Unicode 형태로 나온 데이터를 ascii 형식으로 올렸다.. 라고 정리 했는데 맞는진 모르겠다. 왜냐면 파일 형식이 결국 ascii 였기 때문.

    Documents/\uac1c\ubc1c\ud504\ub85c\uc81d\ud2b8/\uacf5\uc6a9
    Documents/개발프로젝트/공용

    문제는 다음과 같다. 위 문자열을 아래와 같이 한글로 만들기만 하면 된다.

    파이썬에서 확인해보려고 했는데 쉽지 않다. 

     

    결국 라이브러리나 쉬운 방법을 찾지 못해 이런식으로 진행하기로 한다.
    1. 글자에서 유니코드 형태를 찾는다.
    2. 그 유니코드의 \u뒤 4자리를 10진수로 변환한다.
    3. 그 10진수를 아스키코드로 변환(chr)하고 그 변환 문자를 대신 유니코드 자리에 넣는다(replace)

    간단히 코드는 이런식으로 나온다.

    test = "안녕 나는 \\uc2e0\\uccad_\\uc791\\uc5c5\\uc911.xlsx"
    p = re.compile(r'\\u[a-z0-9]{4}')
    
    result = p.findall(test)
    for i in result :
    	u_int = int(i[2:]), 16)
        test = test.replace(1, chr(u_int))
        
    print(test)

    이로써 코드 자체가 돌아가는 시간은 더 늘어나게 되었지만,, 더 좋은 방법을 찾기 전까지는 이렇게 해결해야 쓰겄다.

    흠.. 사실 이것보다 큰 문제가 있었으니.. 엄청 큰 파일이라 리눅스 압축에 문제가 있는듯 싶다. bad CRC가 떴고, 데이터를 봤더니, 중간 중간 말도 안되는 데이터가 있었다. 그냥 CSV라면 몇개 빼고 넘어갈수 있겠이나, 데이터 자체를 dict로 가지고 와야 하는 형태라 고치는 데도 한계가 있다. 데이터를 다시 달라고 전달해야겠다.

    다시 전달받고 (이번엔 좀 쪼개서 받으니 문제가 없었다.) 작업을 하는데, \ud83d... 파일명에 이딴 이모티콘을 쓰면.. 내가 많이 괴롭잔나.. 도대체 왜 그러는거야. UTF-8로 치환이 안되는 이모티콘인것 같은데.. 걸러낼수 있는 방법이 없을까

    반응형

    댓글

Designed by Tistory. Flag Counter