Количество символов языка X в смешанном текстовом файле?

Сначала удалите символическую ссылку на существующий Python, используя

sudo rm -r / usr / bin / python

Затем создайте новую ссылку на python для python-2.7

sudo ln -s / usr / local /bin/python2.7 / usr / bin / python

5
21.06.2017, 16:32
3 ответа

Используя python, вы можете сделать что-то вроде этого:

Код:

# coding: utf-8
import re
import codecs

#find_hebrew = re.compile(ur'[\u0590-\u05ff]+')  # python 2
find_hebrew = re.compile(r'[\u0590-\u05ff]+')   # python 3

count = 0
with codecs.open('text_file', 'rU', encoding='utf-8') as f:
    for line in f.readlines():
        for n in find_hebrew.findall(line):
            count += len(n)
print(count)

Результат:

62
3
27.01.2020, 20:34

Возможна проблема с определением длины строк Unicode. Подробнее о нормализации см. эту страницу в документации для разработчиков Twitter.

Количество символов будет зависеть от настроенной вами локали. Вы можете запустить locale, чтобы убедиться, что у вас настроена локаль UTF-8. Как только это будет сделано, код от @stephen-rauch должен работать.

В зависимости от того, какую библиотеку регулярных выражений вы используете, вы также можете использовать именованные скрипты, такие как \p{иврит} и \P{греческий} Вот пример использования \P{иврит} для удаления всех нееврейских символов: Ссылка

Отредактировано: первоначальные результаты были получены из-за неправильно настроенной локали

4
27.01.2020, 20:34

Мне кажется, что они близки (протестированы на Ubuntu 16.04)

$ perl -0777 -MEncode -ne 'print decode("UTF-8",$_) =~ tr/\x{0590}-\x{05ff}//,"\n"' input
62
$ perl -0777 -MEncode -ne 'print decode("UTF-8",$_) =~ tr/\p{Hebrew}//,"\n"' input
63

Я не уверен, каким должен быть «правильный» ответ.

4
27.01.2020, 20:34

Теги

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