Regex findall() работает с использованием строковой переменной, но не использует встроенную функцию, возвращающую строкуPython

Программы на Python
Anonymous
Regex findall() работает с использованием строковой переменной, но не использует встроенную функцию, возвращающую строку

Сообщение Anonymous »

Я новичок в Python, но программировал на нескольких других языках. Это должно быть очень просто, но это ускользает от меня. У меня есть простой текстовый файл, к которому я использую регулярное выражение для поиска шаблона (слова заглавными буквами в отдельной строке).
Все работает так, как ожидалось, если я сначала прочитал файл в строковую переменную, но не в том случае, если я читаю файл как строку.
Это работает (сначала чтение содержимого файла в переменную str перед вызовом findall()) :

Код: Выделить всё

text = file.read()
matched_list = []
matched_list = re.findall(r"^([A-Z]+$)\b", text, re.M)
Возвращает список совпадений из файла, как и ожидалось.
Это не работает (чтение содержимого файла в качестве параметра для findall()):

Код: Выделить всё

matched_list = []
matched_list = re.findall(r"^([A-Z]+$)\b", file.read(), re.M)
Возвращает пустой список.
Я ожидаю, что оба эти метода дадут одинаковый результат.Похоже, это особенность обработки вызовов функций в Python. Мне бы хотелось его понять, поскольку он кажется странным по сравнению с языками, с которыми я более знаком.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ion-return

Вернуться в «Python»