我希望从文本文件中计算段落中的行数,如下所示:
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)
但是,我很惊讶这可能太复杂了......也许?
答案 0 :(得分:2)
文件 test_line.txt
black
yellow
pink
hills
mountain
liver
barbecue
spaghetti
index
开始计算行数。index
重置为0
现在您有一个列表,其中包含每个段落中的行数。您可以随意对列表执行任何操作。
这是您修改过的代码 -
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]
子列表。