обработка файлов + очистка слов (попытка найти в файле все слова, оканчивающиеся на «y»)

ОШИБКА: трассировка (последний последний вызов): Файл c:\Users\Pranjal\Desktop\tstp\zen_scraper.py, строка 5, словами = re.findall($y,file) Файл C:\Program Files\WindowsApps\ PythonSoftwareFoundation.Python.3.8_3.8.2288.0_x64__qbz5n2kfra8p0\lib\re.py, строка 241, в findall return _compile(шаблон, флаги).findall(string) TypeError: ожидаемая строка или байтоподобный объект PS C:\Users\Pranjal \Рабочий стол\tstp›

import re

file = open("zen.txt",'r')

words = re.findall("$y",file)
print(words)

person Community    schedule 20.03.2021    source источник


Ответы (1)


Вы открыли файл, но еще не получили его содержимое. Кроме того, re здесь не нужен, достаточно str.endswith().

with open("zen.txt",'r') as f:
    for line in f:
        for word in line.split():
            if word.endswith('y'):
                print(word)
person alec_djinn    schedule 20.03.2021
comment
как python распознает строку и слово ????являются ли эти python встроенными ключевыми словами???@alec_djinn - person ; 20.03.2021
comment
@PranjalRuhela нет, подойдет любое имя переменной. f — файловый объект, который можно представить как список строк. Таким образом, итерация по нему дает вам линии. Каждая строка представляет собой строку, состоящую из слов, разделенных пробелами, .split() составляет из нее список слов. Проверьте это docs.python.org/3/library/functions.html#open и docs.python.org/3/tutorial/inputoutput. html#tut-файлы - person alec_djinn; 21.03.2021