如何计算每个段落中的行数

时间:2018-03-22 09:53:43

标签: python

我希望从文本文件中计算段落中的行数,如下所示:

text file =

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)
但是,我很惊讶这可能太复杂了......也许?

3 个答案:

答案 0 :(得分:2)

文件 test_line.txt

black
yellow
pink

hills
mountain
liver

barbecue
spaghetti
  1. 使用index开始计算行数。
  2. 在第6行检查是否有新行,并在列表中附加计数的段落行,并将index重置为0
  3. 第9行计算行
  4. 第11行追加最后一段
  5. 现在您有一个列表,其中包含每个段落中的行数。您可以随意对列表执行任何操作。

    这是您修改过的代码 -

    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]
    

    希望它有所帮助!

答案 1 :(得分:1)

您可以按 java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Double at scala.runtime.BoxesRunTime.unboxToDouble(BoxesRunTime.java:114) at org.apache.spark.sql.Row$class.getDouble(Row.scala:248) at org.apache.spark.sql.catalyst.expressions.GenericRow.getDouble(rows.scala:165)... 50 elided 拆分并使用列表理解:

  

的test.txt

\n\n
  

test.py

black
yellow
pink

hills
mountain
liver

barbecue
spaghetti

输出:

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

答案 2 :(得分:0)

您可以使用以下内容:

.\Insert-DefaultAddressesToKretaDb.ps1 -server "<serverName>'-database "<databaseName>"

您在哪里阅读文件并拆分新行。这会给你:

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']] 会给你3.例如:

len(sublists[0])

输出:

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

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