2017-10-29 14 views
5

내가 데바 나가리 단어데바 나가리

을 syllabify하려고의 음절

धर्मक्षेत्रे -> धर् मक् षेत् रे dharmakeshetre - 나는 같은 결과를 얻을

wd.split('्') 

재> dhar 살려의 shet :

['धर', 'मक', 'षेत', 'रे'] 

부분적으로 정확합니까?

(210)

나는 다른 단어를 कुरुक्षेत्र 시도 -> कु रुक् षेत् रे kurukshetre -> 구 RUK 그녀는

['कुरुक', 'षेत', 'रे'] 

을 트레 결과는 분명히 잘못된 것입니다.

음절을 효과적으로 추출하려면 어떻게해야합니까? 당신이 문자

>>> data = "कुरुक्षेत्र" 
>>> re.findall(".", data) 
['क', 'ु', 'र', 'ु', 'क', '्', 'ष', 'े', 'त', '्', 'र'] 

그리고 다른 문자열하여 문자열의 문자를 보면

답변

1

>>> data = "धर्मक्षेत्रे" 
>>> re.findall(".", data) 
['ध', 'र', '्', 'म', 'क', '्', 'ष', 'े', 'त', '्', 'र', 'े'] 

그래서 아마이 사용 '्'्를 분할 당신이 원하는. 이제 표기 문자라고 부르 자. 첫 번째 표기 문자로 ord(data[2])을 인쇄하면 2381이됩니다. 이제이 값

>>> for i in range(2350, 2400): 
...  print(i, chr(i)) 
... 
2350 म 
2351 य 
2352 र 
2353 ऱ 
2354 ल 
2355 ळ 
2356 ऴ 
2357 व 
2358 श 
2359 ष 
2360 स 
2361 ह 
2362 ऺ 
2363 ऻ 
2364 ़ 
2365 ऽ 
2366 ा 
2367 ि 
2368 ी 
2369 ु 
2370 ू 
2371 ृ 
2372 ॄ 
2373 ॅ 
2374 ॆ 
2375 े 
2376 ै 
2377 ॉ 
2378 ॊ 
2379 ो 
2380 ौ 
2381 ् 
2382 ॎ 
2383 ॏ 
2384 ॐ 
2385 ॑ 
2386 ॒ 
2387 ॓ 
2388 ॔ 
2389 ॕ 
2390 ॖ 
2391 ॗ 
2392 क़ 
2393 ख़ 
2394 ग़ 
2395 ज़ 
2396 ड़ 
2397 ढ़ 
2398 फ़ 
2399 य़ 

주위에 조사하면 우리는 23622391 사이의 값에 주로 관심이 있습니다. 그래서 우리는 그러한 값의 배열을 만듭니다.

다음으로 해당 표기 기호가 있거나없는 모든 패턴을 찾고 싶습니다.

>>> re.findall(".[" + split + "]?", "धर्मक्षेत्रे") 
['ध', 'र्', 'म', 'क्', 'षे', 'त्', 'रे'] 
>>> re.findall(".[" + split + "]?", "कुरुक्षेत्र") 
['कु', 'रु', 'क्', 'षे', 'त्', 'र'] 

이렇게하면 사용자가 찾고있는 것일 수 있습니다. 좀 더 복잡한 처리가 필요하다면 @OphirYoktan 링크를 클릭해야합니다.

+0

덕분에 많은 :

import unicodedata def split_clusters(txt): """ Generate grapheme clusters for the Devanagari text.""" stop = '्' cluster = u'' end = None for char in txt: category = unicodedata.category(char) if (category == 'Lo' and end == stop) or category == 'Mn': cluster = cluster + char else: if cluster: yield cluster cluster = char end = char if cluster: yield cluster 

테스트 기능 : 이것은 당신이 무엇을 달성하고자하는 경우

을 참조하십시오. 나는 여기에서 그것을 취할 수있다. –

0

체크 아웃 unicodedatamodule을 확인하십시오. 각 문자에 할당

>>> import unicodedata 
>>> word = 'कुरुक्षेत्र' 

이름 : 각 문자에 할당

>>> for ch in word: 
     print(unicodedata.name(ch)) 


DEVANAGARI LETTER KA 
DEVANAGARI VOWEL SIGN U 
DEVANAGARI LETTER RA 
DEVANAGARI VOWEL SIGN U 
DEVANAGARI LETTER KA 
DEVANAGARI SIGN VIRAMA 
DEVANAGARI LETTER SSA 
DEVANAGARI VOWEL SIGN E 
DEVANAGARI LETTER TA 
DEVANAGARI SIGN VIRAMA 
DEVANAGARI LETTER RA 

일반 카테고리 :

>>> for ch in word: 
     print(unicodedata.category(ch)) 


Lo 
Mn 
Lo 
Mn 
Lo 
Mn 
Lo 
Mn 
Lo 
Mn 
Lo 

FileFormat.info 유니 코드 문자 범주의 목록이 있습니다.

>>> list(split_clusters('धर्मक्षेत्रे')) 
['ध', 'र्म', 'क्षे', 'त्रे'] 
>>> list(split_clusters('कुरुक्षेत्र')) 
['कु', 'रु', 'क्षे', 'त्र']