Python - 在行中搜索单词,计数并相加

3
我相信这个问题不用想得太复杂,一定有简单的解决方法,但是我好像无法将它们整合在一起。
我正在寻找一种搜索方法。我想让一个Python脚本在文本文件中搜索关键字并计算它出现在多少行上。如果关键字在单个行上出现多次,我希望仍然只计数一次。
长话短说; 如果一个关键字出现在单个行上,我希望计数该行并将其添加到将成为数学方程式的内容中。
非常感谢您的帮助!提前致谢。

你在这个问题的哪个部分卡住了? - johnsyweb
4个回答

4
您可以定义以下函数。
def lcount(keyword, fname):
    with open(fname, 'r') as fin:
        return sum([1 for line in fin if keyword in line])

现在,如果您想知道“foo.cpp”中包含“int”的行数,可以执行以下操作:
print lcount('int', 'foo.cpp')

如果您的操作系统支持,您也可以在命令行上执行以下替代方法:

grep int foo.cpp | wc -l

太好了!我知道我没有离谱。你帮了我大忙。谢谢。 :) - Dustin
1
你可以将grep命令行进一步简化为grep -c int foo.cpp - DDay

0

也许你可以尝试这个:

def kwdCount(textContent, keyword):
    lines=textContent.split("\n")
    count=len([1 for line in lines if line.find(keyword)!=-1])
    return count

>>> yourTextFile="hello world\n some words here\n goodbye world"
>>> kwdCount(ourTextFile,"world")
    2

0
假设f是文件对象,
lines = f.readlines()
print len([line for line in lines if keyword in line])

0

非Python Unix解决方案相当直接:

  • “搜索文本文件中的关键字”是grep
  • “计算有多少行”是wc

您是否难以在Python中实现它们的本质?


我曾经考虑过这些,但不幸的是我正在使用Windows系统,并不知道是否有其他替代方案。此外,我尽可能地想保持“仅使用Python”的状态。谢谢! - Dustin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接