'Python'에 해당되는 글 2건
- 2023.01.31 python 한글 반영해서 byte단위로 문자열 잘라주는 함수
- 2020.12.04 python 한글2글자, 영문1글자로 글자수 계산
2023. 1. 31. 16:55
python 한글 반영해서 byte단위로 문자열 잘라주는 함수
2023. 1. 31. 16:55 in 개발관련/기타
버그나 문제점이 좀 있긴 하겠지만,
일단 전체적인 틀은 아래와 같음
실 적용에는 좀더 제대로 고민해서 만들 필요는 있을 것임
import re
# 문자열을 바이트 단위로 슬라이스 해주는 함수
# iByteStart = 시작위치, iByteEnd = 종료위치, strTarget = 자를 문자열, iHangulSize = 한글을 몇바이트로 계산할지 여부(기본값2)
def getSliceByte(iByteStart, iByteEnd, strTarget, iHangulSize = 2):
strReturn = ""
iCurrPos = 0
lstTarget = list(strTarget)
for char in lstTarget:
if(iByteStart <= iCurrPos and iByteEnd > iCurrPos):
strReturn = strReturn + char
# print(f"strReturn = {strReturn}")
elif (iByteEnd < iCurrPos):
break
if(len(re.findall(u'[\u3130-\u318F\uAC00-\uD7A3]+',char)) > 0):
# 한글임
iCurrPos = iCurrPos + iHangulSize
else:
iCurrPos = iCurrPos + 1
# print(f"iCurrPos = {iCurrPos}")
return strReturn
추가 : chat GPT가 한글을 파악하는 다른 방법을 알려줌... 이게 정규식보다 빠르고 좋을것 같음 아래 함수 응용해서 위의 소스 수정하면 될듯
def is_korean(char):
# Check if the character is a Korean character
return ord(char) >= ord('가') and ord(char) <= ord('힣')
2020. 12. 4. 14:32
python 한글2글자, 영문1글자로 글자수 계산
2020. 12. 4. 14:32 in 개발관련/기타
요즘은 세상이 좋아져서 한글도 1글자(byte의 개념이 아님!!), 영어도 1글자로 처리가 되줘서 크게 불편한것 없이 살고는 있지만, 가끔 통신이나 Byte단위로 뭐 해야 할때 한글2글자, 영문 1글자로 글자수 계산해야 하는 경우가 있음
(진지하게 따지면 한글 3byte...뭐 그런 얘기가 나오는게 맞지만 그렇게 까지 계산해야 하는 상황이면 보통 그냥 전문 통신 말고 API같은걸로 만들어달라고 하는게 나을것임 -_-))
어디까지나 필요할때 잠깐 써먹기 위해서 여기 저장해 놓음
import re
def korlen(str):
korP = re.compile('[\u3131-\u3163\uAC00-\uD7A3]+',re.U)
temp = re.findall(korP, str)
temp_len = 0
for item in temp:
temp_len = temp_len + len(item)
return len(str) + temp_len
test = "안녕하세요, 이것은 테스트 12345 입니다.ㅋㅋㅋ Hello!!!"
# 길이 37, 한글 2바이트 기준 54 (한글 17자)
print(korlen(test))