Как прочитать и сравнить разные слова в одной строке файла, который сохраняется в формате UTF-8? в питоне? - PullRequest
0 голосов
/ 26 апреля 2019

Я хочу дословно прочитать конкретную строку файла (в формате кодировки UTF-8). Я могу прочитать всю строку с кодом:

read_language = open(X, "r", encoding='UTF8') # here X is a predefined file name

T=read_language.readline()

Основная проблема заключается в том, что пробел utf-8 отличается от обычного пробела.

это для чтения linse, но я хочу прочитать каждое слово из строки и узнать порядковый номер каждого слова. Я также хочу сравнить его с предопределенным словом.

Строка в моем файле समीकरण ज + अ. Я хочу прочитать первое слово (समीकरण), затем следующее слово и т. Д. До конца строки. Я также хочу сравнить проверку для + s в операторе if для выполнения дальнейших операций.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019
    read_language = open(X, "r", encoding='UTF8')#X and Y are predefined filenames 
    output_file = open(Y, "w", encoding='UTF8') 
    T=read_language.readline()
    for idx, word in enumerate(re.split(r"\s", T)):
        print (idx, word)
        if idx==2:
            print(word)
            output_file.write(word)
   read_language.close()
   output_file.close()

у меня это работает для определенного индекса даже в формате utf-8 (юникод)

0 голосов
/ 26 апреля 2019

Эта функция будет читать строку и печатать все слова.Он разбивает строку, используя регулярное выражение пробелов (\ s), и добавляет индекс, используя функцию enumerate .

def read_words(file_name):
    with open(file_name, "r", encoding="UTF8") as read_language:
        line = read_language.readline()
        for idx, word in enumerate(re.split(r"\s", line)):
            print (idx, word)

, вы можете обновить его до генератора, используя yield:

def read_words(file_name):
    with open(file_name, "r", encoding="UTF8") as read_language:
        line = read_language.readline()
        for idx, word in enumerate(re.split(r"\s", line)):
            yield (idx, word)

Вы можете добавить функцию сравнения внутри цикла for и выполнять любую логику по вашему желанию со словом.

...