Извлечение символов Юникода в определенном диапазоне из строки - PullRequest
0 голосов
/ 22 июня 2019

У меня есть текстовый файл с большим количеством ненужных символов.

https://raw.githubusercontent.com/shantanuo/marathi_spell_check/master/dicts/sample.txt

Мне нужно оставить только символы девнагари.Ожидаемый чистый вывод будет выглядеть примерно так ...

भूमी
भूमी
भूमीला
भैय्यासाहेब
भैरवनाथ
भैरवी
भैरव
गावापासून
गा

На этой странице мне нужно извлечь все символы в диапазоне Юникода от U + 090 до U + 097 https://en.wikipedia.org/wiki/Devanagari_(Unicode_block)


Я пробовал этот код, но он возвращает некоторые иностранные символы.

def remove_junk(word):
    mylist=list()
    for i in word:
        if b'9' in (i.encode('ascii', 'backslashreplace')):
            mylist.append(i)
    return (''.join(mylist))

with open('sample2a.txt', 'w') as nf:
    with open('sample.txt') as f:
        for i in f:
            nf.write(remove_junk(i) + '\n')

Ответы [ 2 ]

3 голосов
/ 22 июня 2019

Вы можете удалить все символы, не входящие в диапазон Unicode U + 0900-U + 097F, используя регулярное выражение.

import re

p = re.compile(r'[^\u0900-\u097F\n]')   # preserve the trailing newline
with open('sample.txt') as f, open('sample2a.txt', 'w') as nf:
    for line in f:
        cleaned = p.sub('', line)
        if cleaned.strip():
            nf.write(cleaned)

Пример минимального кода

import re

text = '''
‘भूमी
‘भूमी’
‘भूमी’ला
‘भैय्यासाहेब
‘भैरवनाथ
‘भैरवी
‘भैरव’
ﻇﻬﻴﺮ
(ページを閲覧しているビジターの使用言語)。
(缺少文字)
गावापासून
गा
'''

p = re.compile(r'[^\u0900-\u097F\n]')
for line in text.splitlines():
    cleaned = p.sub('', line)
    if cleaned.strip():
        print(cleaned)

# भूमी
# भूमी
# भूमीला
# भैय्यासाहेब
# भैरवनाथ
# भैरवी
# भैरव
# गावापासून 
# गा
2 голосов
/ 22 июня 2019

Я не знаю Python, но, полагаю, можно использовать свойства Юникода в регулярных выражениях, как в JavaScript, поэтому можно каким-то образом адаптировать следующий скрипт, используя скрипт Деванагари свойство:

var text =
`‘भूमी
‘भूमी’
‘भूमी’ला
‘भैय्यासाहेब
‘भैरवनाथ
‘भैरवी
‘भैरव’
ﻇﻬﻴﺮ
(ページを閲覧しているビジターの使用言語)。
(缺少文字)
गावापासून
�गा`;
console.log (text.replace (/[^\r\n\p{Script=Devanagari}]/gu, ""));

, что дает:

भूमी
भूमी
भूमीला
भैय्यासाहेब
भैरवनाथ
भैरवी
भैरव



गावापासून
गा
...