抱歉,如果这个问题对你们中的一些人来说看起来有点愚蠢,但我完全是一个用Python编程的初学者,所以我很糟糕,仍然有很多东西需要学习。所以基本上我有一个由段落分隔的长文本文件,有时换行符可以是两倍或三倍,这会使任务对我们来说更困难,所以我添加了一些检查,看起来它工作得很好,所以我有一个名为“段落”的变量,它告诉我我当前在哪个段落中。现在基本上我需要扫描这个文本文件并搜索其中的一些单词序列,但是换行符是这里最糟糕的敌人,例如,如果我有字符串= "dummy text“,我正在查找:
"random questions about files with a dummy
text and strings
hey look a new paragraph here"正如您所看到的,在dummy和text之间有一个换行符,因此逐行读取文件不起作用。所以我想直接将整个段落加载到一个字符串中,这样我甚至可以删除标点符号,更容易地填充,并直接检查其中是否包含这些单词序列。所有这些都必须在没有库的情况下完成。然而,我的段落计数器代码在文件被读取时工作,所以如果可以上传字符串中的整个段落,我应该基本上使用类似"".join,直到段落增加1,因为我们在下一个段落?有什么想法吗?
发布于 2021-01-26 23:49:34
我认为你不需要以一种困难的方式来思考。对于这类问题,这里有一个非常常用的模式。
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相同的段落。
要检查最后一行,请尝试此模式。
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 发布于 2021-01-26 23:37:04
这应该能起到作用。它非常简短和优雅:
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"发布于 2021-01-26 23:31:55
您可以去掉换行符。这里有一个来自不同问题的例子。
data = open('resources.txt', 'r')
book_list = []
for line in data:
new_line = line.rstrip('\n')
book_list.append(new_line)https://stackoverflow.com/questions/65903633
复制相似问题