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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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