很抱歉,如果这个问题对你们中的一些人来说可能看起来有点愚蠢,但我完全是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))
如果一个strip
ped行为空,则会遇到第二个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)