python-3.x 根据空行的位置(段落开头、中间或结尾)区分空行

gab6jxml  于 2023-02-14  发布在  Python
关注(0)|答案(1)|浏览(104)

请看下面的例子
[空白行/S]
第一段
[段落之间的空白线]
第二段
[段落之间的空白线]
第三段
[空白行/S段末]
在段落的开头、中间和结尾都有空行。我想把它们区分开,并对每一行采取单独的行动。
下面的代码只能找到空行,但不能判断它是在开头还是结尾,还是在段落之间。

for line in myinfile:
    if line in ['\n', '\r', '\r\n']:
        pass

或者,

for line in myinfile:
    if line.strip() == "":
        pass

这里的解决方案可能是什么?

uidvcgyl

uidvcgyl1#

所以你可以在执行任何操作之前至少迭代一次字符串列表(例如换行符分隔的文本)。然后你可以将空格的索引存储在3个单独的列表中。问题是你真的需要在知道end_blanks是什么之前迭代整个列表。

text = """

First Paragraph

Second Paragraph

Third Paragraph

"""

start_blanks = []
mid_blanks = []
end_blanks = []
start = True

for idx, line in enumerate(text.splitlines()):
    if start and line == "":
        start_blanks.append(idx)
    elif start and line != "":
        start = False
    elif line == "":
        end_blanks.append(idx)
    elif line != "":
        # append current end_blanks to mid_blanks and
        # reset end_blanks
        mid_blanks.extend(end_blanks)
        end_blanks = []

print(f"Start blanks are lines: {start_blanks}")
print(f"Mid blanks are lines: {mid_blanks}")
print(f"End blanks are lines: {end_blanks}")
  • 产出 *
Start blanks are lines: [0, 1]
Mid blanks are lines: [3, 4, 6, 7]
End blanks are lines: [9]

相关问题