Python - 将段落中的各个行与文本文件分开

时间:2015-11-03 09:29:58

标签: python

我有一个文本文件,其中包含以下段落:

上面的with语句将在嵌套的代码块后自动关闭文件。上面的with语句将在嵌套的代码块之后自动关闭文件。上面的with语句将在嵌套的代码块之后自动关闭文件 上面的with语句将在没有。

的嵌套代码块之后自动关闭文件

现在,我想通过分隔段落的各行来修改文件,并将其保存在与以下相同的文本文件中:

上面的with语句将在嵌套的代码块之后自动关闭文件 上面的with语句将在嵌套的代码块之后自动关闭文件 上面的with语句将在嵌套的代码块之后自动关闭文件 上面的with语句将在没有。

的嵌套代码块之后自动关闭文件

我能够做到,但有点复杂。我的代码如下:

尝试-1

file = open("file_path")
content = file.read()
file.close()
file = open("file_path", 'w')
a = content.replace('. ', '.\n')
file.write(a)
file.close()

尝试-2

file = open("file_path")
contents = file.readlines()
file.close()
b = []
for line in contents:
    if not line.strip():
        continue
    else:
        b.append(line)
b = "".join(b)
file = open("file_path", 'w')
file.write(b)
file.close()

我打开文件两次读取和两次写入,是否有更好的方法将段落与文本文件分开,并将其写入同一文本文件?

2 个答案:

答案 0 :(得分:3)

你可以这样做:

with open('filepath', 'r') as contents, open('filepath', 'w') as file:
    contents = contents.read()
    lines = contents.split('. ')
    for index, line in enumerate(lines):
        if index != len(lines) - 1:
            file.write(line + '.\n')
        else:
            file.write(line + '.')

答案 1 :(得分:1)

您可以使用seek文件方法跳转到当前文件:

f.seek(offset, from_what)

如果你想使用文件进行写入和读取,请使用选项r +:

file = open("file_path", 'r+')

您也可以使用readlines跳过步骤并使用文件迭代。代码应该是:

file = open("file_path", "r+")
content = file.read()
a = content.replace('. ', '.\n')
file.seek(0)
file.write(a)

file.seek(0)

b = []
for line in file:
    if not line.strip():
        continue
    else:
        b.append(line)
b = "".join(b)
file.seek(0)
file.write(b)
file.close()