В Python 3 считайте позиции тайских персонажей

Вы можете сначала отключить встроенное промежуточное программное обеспечение ASP.NET, которое выдает это HTTPException, а затем добавит ваш собственный ASP.NET или ASP.NET Core , которое обрабатывает проверку пути запроса для опасных символов и выполняет настраиваемое действие (например, бросание другого исключения, перенаправление на собственный URL-адрес ошибки и т. Д.).

3
задан RBV 19 January 2019 в 18:55
поделиться

1 ответ

Это не единственный способ, если вы хотите самостоятельно реализовать счетчик графем, но он сложный, и вы должны обратиться к https://unicode.org спецификациям, чтобы все было правильно.

thai_str - это не строка UTF-8, а строка Unicode, содержащая кодовые точки Unicode. Существуют разные категории кодовых точек. Две категории необходимы для подсчета позиций символов:

  • Lo Other_Letter , другие буквы, включая слоги и иероглифы;
  • Mn Nonspacing_Mark , непространственный комбинирующий знак ( нулевая ширина продвижения ).

Если вы пропустите подсчет категории кодовых точек Nonspacing_Mark (Mn), вы примерно увидите, что делает библиотека графем:

import unicodedata as ud

thai_str = 'สีโชคดีเป็นสีชมพู สีโชคร้ายเป็นสีเหลืองและขาว'

for cp in thai_str:
    print(f'{cp}\t{ud.category(cp)}\t{ud.name(cp)}')

print(sum(1 for cp in thai_str if ud.category(cp)[0] != 'M'))

Вывод:

ส   Lo  THAI CHARACTER SO SUA
ี   Mn  THAI CHARACTER SARA II
โ   Lo  THAI CHARACTER SARA O
ช   Lo  THAI CHARACTER CHO CHANG
ค   Lo  THAI CHARACTER KHO KHWAI
ด   Lo  THAI CHARACTER DO DEK
ี   Mn  THAI CHARACTER SARA II
เ   Lo  THAI CHARACTER SARA E
ป   Lo  THAI CHARACTER PO PLA
็   Mn  THAI CHARACTER MAITAIKHU
...
ว   Lo  THAI CHARACTER WO WAEN
35
0
ответ дан bytebuster 19 January 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: