gpt4 book ai didi

python - 如何计算特定行后 2 行的所有行中的单词?

转载 作者:行者123 更新时间:2023-11-28 22:34:40 24 4
gpt4 key购买 nike

因此,这听起来可能有点令人困惑,我将尝试对其进行解释。例如从这些行:

next line 1
^^^^^^^^^^^^^^^^^^
red blue dark ten lemon
next line 2
^^^^^^^^^^^^^^^^^^^
hat 45 no dad fate orange
next line 3
^^^^^^^^^^^^^^^^^^^
tan rat lovely lemon eat
you him lemon Daniel her"

我只对上面两行有“下一行”的行中“柠檬”的计数感兴趣。所以,我期望的输出是“2 个柠檬”。

任何帮助将不胜感激!

到目前为止我的尝试是:

#!/usr/bin/env python
#import the numpy library
import numpy as np

lemon = 0

logfile = open('file','r')

for line in logfile:

words = line.split()

words = np.array(words)
if np.any(words == 'next line'):
if np.any(words == 'lemon'):
lemon +=1
print "Total number of lemons is %d" % (lemon)

但是只有当它与“下一行”在同一行时才算作“柠檬”。

最佳答案

对于每一行,您需要能够访问它之前的两行。为此,您可以使用 itertools.tee 创建两个独立的文件对象(类似迭代器的对象),然后使用 itertools.izip() 创建您的预期配对:

from itertools import tee, izip
with open('file') as logfile:
spam, logfile = tee(logfile)
# consume first two line of spam
next(spam)
next(spam)
for pre, line in izip(logfile, spam):
if 'next line' in pre:
print line.count('lemon')

或者,如果您只想计算行数,可以在 sum() 中使用生成器表达式:

from itertools import tee, izip
with open('file') as logfile:
spam, logfile = tee(logfile)
# consume first two lines of spam
next(spam)
next(spam)
print sum(line.count('lemon') for pre, line in izip(logfile, spam) if 'next line' in pre)

关于python - 如何计算特定行后 2 行的所有行中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38791960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com