如何计算每个段落的行数

2024-09-27 22:23:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想计算一下文本文件中段落的行数,如下所示:

文本文件=

black
yellow
pink

hills
mountain
liver

barbecue
spaghetti

我想知道最后一段比其他段落少或多行,然后删除它。你知道吗

我想要的结果是:

black
yellow
pink

hills
mountain
liver

我试着这样做:

c = []
with open(file) as paragraph:

    index = 0
    for line in paragraph:

        if line.strip():
            index += 1
    c.append(index)

但是,我很惊讶这可能太复杂了…也许?你知道吗


Tags: indexwithlineopen段落black文本文件yellow
3条回答

您可以按\n\n拆分并使用列表:

test.txt

black
yellow
pink

hills
mountain
liver

barbecue
spaghetti

test.py

with open('test.txt') as f:
  output = f.read()
  x = [len(i.split('\n')) for i in output.split('\n\n')]
  print(x)

输出:

[3, 3, 2] # 2 is the one you want to remove

文件测试_行.txt

black
yellow
pink

hills
mountain
liver

barbecue
spaghetti
  1. 使用index开始计算行数。你知道吗
  2. 在第6行中,检查是否有新行出现,并用已计数的段落行追加列表,并将index重置为0
  3. 在第九行数着线
  4. 在第11行加上最后一段

现在您得到了一个列表,其中包含每个段落中的行数。你想怎样就怎样。

这是你修改过的代码-

file = "test_line.txt"
c = []
with open(file) as paragraph:

    index = 0
    for line in paragraph:
        if line == '\n':
            c.append(index)
            index = 0
        else:
            index+=1
    c.append(index)

print(c)

输出

[3, 3, 2]

希望有帮助!你知道吗

你可以这样使用:

from itertools import groupby

lines = open("test.txt").read().splitlines()
paragraphs = [list(groups) for keys, groups in groupby(lines, lambda x: x != "") if keys]

读取文件并在新行上拆分。这将为您提供:

[['black', 'yellow', 'pink'], [''], ['hills', 'mountain', 'liver'], [''], ['barbecue', 'spaghetti']]

在那里,您可以使用itertools.groupby将它们分组到子列表中,并执行一些操作来确定所需内容。你知道吗

输出:

[['black', 'yellow', 'pink'], ['hills', 'mountain', 'liver'], ['barbecue', 'spaghetti']]

所以现在每个子列表都是一个段落,你可以依赖它。所以对于第一段,类似这样的:len(sublists[0])会给你3。例如:

for paragraph in paragraphs:
  print(len(paragraph))

输出:

3
3
2

现在你只需要用你的逻辑来完成这个。可以使用del sublists[i]删除第i个子列表。你知道吗

相关问题 更多 >

    热门问题