我有一个文件,其中一些句子分布在多行上。
例如:
1:1 This is a simple sentence
[NEWLINE]
1:2 This line is spread over
multiple lines and it goes on
and on.
[NEWLINE]
1:3 This is a line spread over
two lines
[NEWLINE]
所以我希望它看起来像这样
1:1 This is a simple sentence
[NEWLINE]
1:2 This line is spread over multiple lines and it goes on and on.
[NEWLINE]
1:3 This is a line spread over two lines
有些行跨越2或3或4行。如果后面的al行不是新行,则应将其合并为一行。
我想覆盖给定的文件以制作一个新文件。
我已经尝试了一个while循环,但是没有成功。
input = open(file, "r")
zin = ""
lines = input.readlines()
#Makes array with the lines
for i in lines:
while i != "\n"
zin += i
.....
但这会造成无限循环。
最佳答案
在您的用例中,您不应嵌套for
和while
循环。您的代码中发生的事情是,通过i
循环将一行分配给了变量for
,但嵌套的while
循环并未对其进行修改,因此,如果while
子句为True
,那么它将保持这种方式并且没有中断条件,最终会导致无限循环。
一个解决方案可能看起来像这样:
single_lines = []
current = []
for i in lines:
i = i.strip()
if i:
current.append(i)
else:
if not current:
continue # treat multiple blank lines as one
single_lines.append(' '.join(current))
current = []
else:
if current:
# collect the last line if the file doesn't end with a blank line
single_lines.append(' '.join(current))
覆盖输入文件的好方法是收集内存中的所有输出,在读出文件后关闭文件并重新打开以进行写入,或者在读取输入并重命名第二个文件以覆盖后的第一个文件时写入另一个文件。关闭两者。