harupy

Library for handling Korean Hangul


Keywords
korean, hangul, string
License
Apache-2.0
Install
pip install harupy==1.4.3

Documentation

harupy

Overview

harupy๋Š” ํŒŒ์ด์ฌ์œผ๋กœ ๊ฐœ๋ฐœ์‹œ ํ•œ๊ธ€ ์ฒ˜๋ฆฌ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ ๋ชจ๋“ˆ์ด ์ฃผ์š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

ํ•œ๊ธ€ ์ฒ˜๋ฆฌ ์™ธ์—๋„ ๊ฐœ๋ฐœ ์‹ค๋ฌด์—์„œ ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ๋“ค์„ ์ดํ›„๋กœ๋„ ์ถ”๊ฐ€ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

Install

pip๋ฅผ ํ†ตํ•ด์„œ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

pip install harupy

Usage

String

ํ•œ๊ธ€ ์ฒ˜๋ฆฌ ๊ด€๋ จ ๋ฌธ์ž์—ด ๊ฐ์ฒด๋Š” String ์ž…๋‹ˆ๋‹ค. ๋‚ด์žฅ ๊ฐ์ฒด์ธ str์˜ ํ™•์žฅ์ด๋ฏ€๋กœ, ๊ธฐ๋ณธ์ ์œผ๋กœ str ๊ฐ์ฒด์™€ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

>>> from harupy.text import String

josa() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์ ์ ˆํ•˜๊ฒŒ ๋ณ€ํ™˜๋œ ์กฐ์‚ฌ๋ฅผ ๋ถ™์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

>>> name1 = String('๊น€์ˆ˜์•ˆ๋ฌด')
>>> name2 = String('์‚ผ์ฒœ๊ฐ‘์ž ๋™๋ฐฉ์‚ญ')
>>>
>>> name1.josa('์ด')
'๊น€์ˆ˜์•ˆ๋ฌด๊ฐ€'
>>> name2.josa('๊ฐ€')
'์‚ผ์ฒœ๊ฐ‘์ž ๋™๋ฐฉ์‚ญ์ด'
>>>
>>> title = '์‹ ์„ธ๊ณ„'
>>> String(title).josa('์ด๋ผ๋Š”') + ' ์˜ํ™” ๋ดค๋‚˜์š”?'
'์‹ ์„ธ๊ณ„๋ผ๋Š” ์˜ํ™” ๋ดค๋‚˜์š”?'

์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ์‚ฌ์šฉ์ƒ์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์†์„ฑ๊ฐ’์œผ๋กœ ์กฐ์‚ฌ๋ฅผ ์ง์ ‘ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•œ๊ธ€๋กœ ๋œ ์†์„ฑ๊ฐ’์„ ์ž๋™์œผ๋กœ josa() ๋ฉ”์†Œ๋“œ์˜ ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

>>> target = String('์˜ค์†”๊ธธ')
>>> target.๋กœ
'์˜ค์†”๊ธธ๋กœ'
>>> String('ํ˜ธ๋–ก').์ด๋‚˜ + ' ๋จน์ž'
'ํ˜ธ๋–ก์ด๋‚˜ ๋จน์ž'
>>> String('๋–ก๋ณถ์ด').์ด๋‚˜ + ' ๋จน์ž'
'๋–ก๋ณถ์ด๋‚˜ ๋จน์ž'
>>> String('๊ฒŒ').๋‚˜ + ' ' + String('๊ณ ๋™').๋‚˜
'๊ฒŒ๋‚˜ ๊ณ ๋™์ด๋‚˜'

์ˆซ์ž๋ฅผ ํ•œ๊ธ€๋กœ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

>>> price = String(152000)
>>> price.to_hangul()
'์‹ญ์˜ค๋งŒ์ด์ฒœ'
>>> String('37501600').to_hangul()
'์‚ผ์ฒœ์น ๋ฐฑ์˜ค์‹ญ๋งŒ์ฒœ์œก๋ฐฑ'

1์„ ์ƒ๋žตํ•˜์ง€ ์•Š๊ณ  ์ฝ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

>>> String(1110000).to_hangul()
'๋ฐฑ์‹ญ์ผ๋งŒ'
>>> String(1110000).to_hangul(read_one=True)
'์ผ๋ฐฑ์ผ์‹ญ์ผ๋งŒ'

๋ฐ˜๋Œ€๋กœ ํ•œ๊ธ€๋กœ ์ฝ์€ ์ˆซ์ž๋ฅผ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” to_number()๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

>>> String('์ด์ฒœ์‹ญํŒ”').to_number(True)
2018
>>> String('์ฒœ์ด๋ฐฑ์‹ญ์ผ์–ต์ฒœ๋ฐฑ๋งŒ').to_number()
121111000000

๋˜ํ•œ, ๋‚ด์žฅ str ๊ฐ์ฒด์˜ isnumeric()์„ ํ™•์žฅํ•˜์—ฌ, ํ•œ๊ธ€๋กœ ์ฝ์€ ์ˆซ์ž์— ๋Œ€ํ•ด์„œ๋„ ์ฐธ์œผ๋กœ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

>>> String('์‚ฌ์ฒœ์˜ค๋ฐฑ๋งŒ').isnumeric()
True

๋‚ด์žฅ ๋ชจ๋“ˆ unicodedata์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ •๊ทœํ™” ๋ฉ”์†Œ๋“œ๋ฅผ ๋ฐ”๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

>>> list(String('ํ•˜๋ฃจํŒŒ์ด').normalize())
['แ„’', 'แ…ก', 'แ„…', 'แ…ฎ', 'แ„‘', 'แ…ก', 'แ„‹', 'แ…ต']

Feedback

๋ฒ„๊ทธ ์ œ๋ณด, ๊ฐœ์„  ์š”์ฒญ์€ Issues์— ์˜ฌ๋ ค์ฃผ์‹œ๊ฑฐ๋‚˜, sookim@outlook.jp ๋กœ ์—ฐ๋ฝ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋Š” ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

License

Apache License, Version 2.0