首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将文本文件段落加载到不带库的字符串中

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

Stack Overflow用户
提问于 2021-01-26 22:53:38
回答 3查看 120关注 0票数 0

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

代码语言:javascript
运行
复制
"random questions about files with a dummy
 text and strings

 hey look a new paragraph here"

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-26 23:49:34

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

代码语言:javascript
运行
复制
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))

如果strip的行为空,则会遇到第二个\n,这意味着您必须将前几行join到段落中。

如果您遇到第3行\n,则不能再执行join,因此请删除前面的行(lines = [])。这样,您将不会再次join相同的段落。

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

代码语言:javascript
运行
复制
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  
票数 0
EN

Stack Overflow用户

发布于 2021-01-26 23:37:04

这应该能起到作用。它非常简短和优雅:

代码语言:javascript
运行
复制
with open('dummy text.txt') as file:
    data = file.read().replace('\n', '')
print(data)#prints out the file

输出为:

代码语言:javascript
运行
复制
"random questions about files with a dummy text and strings hey look a new paragraph here"
票数 1
EN

Stack Overflow用户

发布于 2021-01-26 23:31:55

您可以去掉换行符。这里有一个来自不同问题的例子。

代码语言:javascript
运行
复制
data = open('resources.txt', 'r')
book_list = []
for line in data:
    new_line = line.rstrip('\n')
    book_list.append(new_line)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65903633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档