파이썬 리스트 인자의 글자개수 구하기
조회수 2719회
names=['김아무개','김자두','아이유','다리우스','하니']
print(len(names[0]))
실행시켰더니 12
가 나왔습니다
제가 원하는 것은 리스트 names
의 0
번째 인자의 글자 개수를 출력하고 싶은 건데
무엇이 잘못됐는지 모르겠습니다
분명 print(names[0])
을 하면 "김아무개"
가 잘만 나오는데;;
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
2 답변
-
놀랍(지 않)게도 파이썬 버전이 2냐 3이냐, 파이썬을 컴파일할 때 UCS-4 지원이 되도록 컴파일되었느냐 등에 영향을 받는 모양입니다. 이게 놀랍지 않을 수 있는 이유는, 겉으로 보기엔 모두 1개의 유니코드 문자인 것들이 바이트 길이는 서로 다를 수 있기 때문입니다.
프로그래밍 업계에서 대체로 상식인 것은: 한글 자소 1개는 3바이트라는 것입니다. 따라서
"김아무개"
는 12바이트가 맞고요.다음을 여러 환경에서 실행해 보면서 테스트해 보세요.
print(len("a")) # 1바이트 print(len("ä")) # 2바이트 print(len("가")) # 3바이트 print(len("家")) # 3바이트 print(len("😂")) # 4바이트 print(len("🤷🏻♂️")) # 17바이트 (U+1F937 + U+200D + U+2642️ + U+FE0F)
- 어? 헐.. 와 바이트였다니 저는 len 함수가 단순히 글자 개수를 표시해주는건줄 알았는데 바이트를 알려주는거였네요.. 글자수를 알려면 어떡하죠; 알 수 없는 사용자 2019.4.21 23:43
- Junseok Lee / 파이썬3에서는 글자개수로 생각해도 안전합니다. 파이썬2에서 문자열과 바이트열의 구분이 모호했기 때문에 발생하는 문제입니다. nowp 2019.4.22 10:40
- https://medium.com/@alvinlindstam/unicode-text-lengt-python-vs-elixir-2d528b801d53 doodoji 2019.4.22 14:38
-
names=['김아무개','김자두','아이유','다리우스','하니'] print(len(names[0]))
에서 12가 나오는 이유는 파이썬이 한국어 한 단어를 3bit로 처리해서 그런 것 같습니다. 근데 () 붙인것을 보기엔 3버젼인것 같은데..?
만약 글자 수로 하고 싶으시면
print(len(names[0])/3)
로 하시면 될 것 같습니다
댓글 입력