将文本文件段落加载到不带库的字符串中



很抱歉,如果这个问题对你们中的一些人来说可能看起来有点愚蠢,但我完全是Python编程的初学者,所以我很糟糕,还有很多东西要学。所以基本上,我有一个用段落分隔的长文本文件,有时换行符可以是两行或三行,这会让我们的任务更加困难,所以我添加了一个小的检查,看起来它运行得很好,所以我有了一个名为"段落";这告诉我现在在哪一段。现在,基本上我需要扫描这个文本文件,并在其中搜索一些单词序列,但换行符是这里最大的敌人,例如,如果我有字符串=";伪文本";我正在调查这个:

"random questions about files with a dummy
text and strings
hey look a new paragraph here"

正如您所看到的,在伪文件和文本之间有一条换行符,因此逐行读取文件是不起作用的。所以我想直接将整个段落加载到一个字符串中,这样我甚至可以更轻松地删除标点符号和内容,并直接检查其中是否包含这些单词序列。所有这些都必须在没有库的情况下完成。然而,我的段落计数器代码在读取文件时可以工作,所以如果可以在字符串中上传整个段落,我基本上应该使用类似"&";。加入,直到段落增加1,因为我们在下一段?知道吗?

这样就可以了。它很短很优雅:

with open('dummy text.txt') as file:
data = file.read().replace('n', '')
print(data)#prints out the file

输出为:

"random questions about files with a dummy text and strings hey look a new paragraph here"

我认为你不需要用困难的方式来思考。这里有一个非常常用的模式来解决这类问题。

paragraphs = []
lines = []
for line in open('text.txt'):
if not line.strip():  # empty line
if lines:
paragraphs.append("".join(lines))
lines = []
else:
lines.append(line)
if lines:
paragraphs.append("".join(lines))

如果一个stripped行为空,则会遇到第二个n,这意味着您必须join一段的前几行。

如果遇到第三个n,则不能再使用join,因此请删除以前的行(lines = [])。这样,你就不会再join同一段了。

要检查最后一行,请尝试此模式。

f = open('text.txt')
line0 = f.readline()
while True:
# do what you have to do with the previous line, `line0`
line = f.readline()
if not line:    # `line0` was the last line
# do what you have to do with the last line
break
line0 = line  

您可以去掉换行符。下面是另一个问题的例子。

data = open('resources.txt', 'r')
book_list = []
for line in data:
new_line = line.rstrip('n')
book_list.append(new_line)

最新更新