как исправить TypeError: ожидаемая строка или байтовоподобный объект - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь заставить мою программу получить предложение из этого файла, чтобы я мог использовать его позже, но он получил ошибку TypeError: ожидаемая строка или байтовоподобный объект

Это мой код

import os
import re
pass_file = open('writer.odt','r')
read = re.findall(r'[ \w]*', pass_file)
print(read)

1 Ответ

0 голосов
/ 11 июня 2019

Библиотека регулярных выражений работает со строками. Открытый файл с именем pass_file в вашем примере - это объект, из которого вы можете получать строки, по одной строке за раз или фрагменту заданного размера (в символах или байтах).

Чтобы получить все непрерывные последовательности символов слова и пробелов из вашего файла, вы можете заменить вторую строку до последней на что-то вроде:

read = [re.findall('[ \w]*', line) for line in pass_file]

Если вам не нужны все строки нулевой длины между каждым символом, который не является символом слова или пробелом, вы можете сказать, что класс символов должен присутствовать один или несколько раз, а не ноль или более, как это делает ваше текущее регулярное выражение :

read = [re.findall('[ \w]+', line) for line in pass_file]

Они оба дают вам список, содержащий списки с вхождениями в каждой строке. Если вы хотите все это в одном списке, вы можете заменить что-то вроде этого:

read = []
for line in pass_file:
    read.extend(re.findall('[ \w]+', line))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...