Ech*_*yak 5 python string utf python-3.x devanagari
我正在尝试对梵文词进行音节化
धर्मक्षेत्रे - >धर्मक्षेत्रेdharmakeshetre - > DHAR麦SHET重
wd.split('?')
Run Code Online (Sandbox Code Playgroud)
我得到的结果如下:
['??', '??', '???', '??']
Run Code Online (Sandbox Code Playgroud)
哪个部分正确
我尝试另一个词कुरुक्षेत्र - >कुरुक्षेत्रेkurukshetre - >区鲁格她唱到tre
['?????', '???', '??']
Run Code Online (Sandbox Code Playgroud)
结果显然是错误的.
如何有效地提取音节?
如果你逐个字符地查看字符串
\n\n>>> data = "\xe0\xa4\x95\xe0\xa5\x81\xe0\xa4\xb0\xe0\xa5\x81\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7\xe0\xa5\x87\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0"\n>>> re.findall(".", data)\n[\'\xe0\xa4\x95\', \'\xe0\xa5\x81\', \'\xe0\xa4\xb0\', \'\xe0\xa5\x81\', \'\xe0\xa4\x95\', \'\xe0\xa5\x8d\', \'\xe0\xa4\xb7\', \'\xe0\xa5\x87\', \'\xe0\xa4\xa4\', \'\xe0\xa5\x8d\', \'\xe0\xa4\xb0\']\nRun Code Online (Sandbox Code Playgroud)\n\n还有你的另一个字符串
\n\n>>> data = "\xe0\xa4\xa7\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xae\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7\xe0\xa5\x87\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa5\x87"\n>>> re.findall(".", data)\n[\'\xe0\xa4\xa7\', \'\xe0\xa4\xb0\', \'\xe0\xa5\x8d\', \'\xe0\xa4\xae\', \'\xe0\xa4\x95\', \'\xe0\xa5\x8d\', \'\xe0\xa4\xb7\', \'\xe0\xa5\x87\', \'\xe0\xa4\xa4\', \'\xe0\xa5\x8d\', \'\xe0\xa4\xb0\', \'\xe0\xa5\x87\']\nRun Code Online (Sandbox Code Playgroud)\n\n所以你想要的可能是使用 来分割这些\'\xe0\xa5\x8d \'\xe0\xa5\x8d。我们暂时称它们为符号字符。如果您打印ord(data[2])第一个符号字符,则它是2381。现在如果你探测这个值
>>> for i in range(2350, 2400):\n... print(i, chr(i))\n...\n2350 \xe0\xa4\xae\n2351 \xe0\xa4\xaf\n2352 \xe0\xa4\xb0\n2353 \xe0\xa4\xb1\n2354 \xe0\xa4\xb2\n2355 \xe0\xa4\xb3\n2356 \xe0\xa4\xb4\n2357 \xe0\xa4\xb5\n2358 \xe0\xa4\xb6\n2359 \xe0\xa4\xb7\n2360 \xe0\xa4\xb8\n2361 \xe0\xa4\xb9\n2362 \xe0\xa4\xba\n2363 \xe0\xa4\xbb\n2364 \xe0\xa4\xbc\n2365 \xe0\xa4\xbd\n2366 \xe0\xa4\xbe\n2367 \xe0\xa4\xbf\n2368 \xe0\xa5\x80\n2369 \xe0\xa5\x81\n2370 \xe0\xa5\x82\n2371 \xe0\xa5\x83\n2372 \xe0\xa5\x84\n2373 \xe0\xa5\x85\n2374 \xe0\xa5\x86\n2375 \xe0\xa5\x87\n2376 \xe0\xa5\x88\n2377 \xe0\xa5\x89\n2378 \xe0\xa5\x8a\n2379 \xe0\xa5\x8b\n2380 \xe0\xa5\x8c\n2381 \xe0\xa5\x8d\n2382 \xe0\xa5\x8e\n2383 \xe0\xa5\x8f\n2384 \xe0\xa5\x90\n2385 \xe0\xa5\x91\n2386 \xe0\xa5\x92\n2387 \xe0\xa5\x93\n2388 \xe0\xa5\x94\n2389 \xe0\xa5\x95\n2390 \xe0\xa5\x96\n2391 \xe0\xa5\x97\n2392 \xe0\xa5\x98\n2393 \xe0\xa5\x99\n2394 \xe0\xa5\x9a\n2395 \xe0\xa5\x9b\n2396 \xe0\xa5\x9c\n2397 \xe0\xa5\x9d\n2398 \xe0\xa5\x9e\n2399 \xe0\xa5\x9f\nRun Code Online (Sandbox Code Playgroud)\n\n我们最感兴趣的是2362和之间的值2391。所以我们创建一个这样的值的数组
>>> split = ""\n>>> for i in range(2362, 2392):\n... split += chr(i)\nRun Code Online (Sandbox Code Playgroud)\n\n接下来我们要找到所有带有或不带有相应符号的模式。
\n\n>>> re.findall(".[" + split + "]?", "\xe0\xa4\xa7\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xae\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7\xe0\xa5\x87\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa5\x87")\n[\'\xe0\xa4\xa7\', \'\xe0\xa4\xb0\xe0\xa5\x8d\', \'\xe0\xa4\xae\', \'\xe0\xa4\x95\xe0\xa5\x8d\', \'\xe0\xa4\xb7\xe0\xa5\x87\', \'\xe0\xa4\xa4\xe0\xa5\x8d\', \'\xe0\xa4\xb0\xe0\xa5\x87\']\n>>> re.findall(".[" + split + "]?", "\xe0\xa4\x95\xe0\xa5\x81\xe0\xa4\xb0\xe0\xa5\x81\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7\xe0\xa5\x87\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0")\n[\'\xe0\xa4\x95\xe0\xa5\x81\', \'\xe0\xa4\xb0\xe0\xa5\x81\', \'\xe0\xa4\x95\xe0\xa5\x8d\', \'\xe0\xa4\xb7\xe0\xa5\x87\', \'\xe0\xa4\xa4\xe0\xa5\x8d\', \'\xe0\xa4\xb0\']\nRun Code Online (Sandbox Code Playgroud)\n\n这应该会让您接近您可能正在寻找的内容。如果您需要更复杂的处理,那么您必须使用@OphirYoktan 发布的链接
\n| 归档时间: |
|
| 查看次数: |
263 次 |
| 最近记录: |