0

我试图让我的程序从这个文件中获取句子,以便以后可以使用它,但它给了我一个错误:

TypeError: expected string or bytes-like object

这是我的代码:

import os
import re

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

1 回答 1

1

正则表达式库适用于字符串。您的示例中名为 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))
于 2019-06-10T22:09:58.150 回答