python - 从输入文件中的引用文件中查找字符串的出现

标签 python

我有两个文件。调用一个文件作为引用文件。该文件包含一个字符串列表,每个字符串各占一行。另一个文件是输入文件。每行都有字符串。 我想找到输入文件中引用文件中每个字符串的出现次数。这是我的代码

def count_line_occurrences(ref_list,input_list):
  line_counter = {}
  # Initialization
  for ref_line in ref_list:
    ref_line = ref_line.rstrip()
    line_counter[ref_line] = 0
  for input_line in input_list:
      input_line = input_line.rstrip()

  for ref_line in ref_list:
    #print ref_line
    for input_line in input_list:
      #print input_line
      if str(input_line).find(str(ref_line)) != -1:
        print 'found ' + ref_line
        line_counter[ref_line] += 1
  return line_counter

但是它不起作用。 注意 - 这不是硬件问题。但这是一项更大任务的一部分。另外,奇怪的是,我已经用 Perl 实现了这部分,并且运行良好。我想将项目转移到 Python,但我遇到了问题。预先感谢您的帮助。

最佳答案

这对我来说很有用。像这样调用你的函数......

if __name__ == "__main__":
    x = count_line_occurrences(["a","b","c"],["c","c","b","a"])
    print x

打印出...

found a
found b
found c
found c
{'a': 1, 'c': 2, 'b': 1}

@Sumod ...这不是预期的行为吗?

看到@Sumod的输入数据后的版本

因此,您输入的问题是您没有正确清理尾随字符 \t\n

以下代码有效...

def count_line_occurrences(ref_list,input_list):
  line_counter = {}

  ref_list = map(lambda x: x.strip(" \t\n"),ref_list)
  input_list = map(lambda x: x.strip(" \t\n"),input_list)

  # Initialization
  for ref_line in ref_list:
    line_counter[ref_line] = 0

  for ref_line in ref_list:
    #print ref_line
    for input_line in input_list:
      #print input_line
      if str(input_line).find(str(ref_line)) != -1:
        print 'found ' + ref_line
        line_counter[ref_line] += 1
  return line_counter

请注意,在初始化计数器之前,我使用...清理了两个输入列表

ref_list = map(lambda x: x.strip(" \t\n"),ref_list)
input_list = map(lambda x: x.strip(" \t\n"),input_list)

python中的string.strip函数接收我想要清理的字符。

对于输入...

    ref_list = ['.Net Framework\n', '7-Zip\n', 'ACT DCP \n', 'ActivePerl \n', 'ActiveState Komodo Edit\n', 'ActiveTCL \n', 'Adobe Flash Player\n']
    input_list = ['7-Zip 4.57\t\n', 'WebEx\t\n', 'Adobe Acrobat Reader 8.0.0\t\n', 'Adobe Flash Player 10 ActiveX\t10.0.32.18\n']
    x = count_line_occurrences(ref_list,input_list)
    print x

我明白了...

{'ActiveState Komodo Edit': 0, '.Net Framework': 0, 'ACT DCP': 0, 'ActivePerl': 0, 'Adobe Flash Player': 1, '7-Zip': 1, 'ActiveTCL': 0}

关于python - 从输入文件中的引用文件中查找字符串的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6225590/

相关文章:

python - 在 Python 脚本运行之间将持久变量保存在内存中

python - 成功安装flask,仍然出现导入错误

python - Selenium Chrome 、Python。在网站上找不到该按钮

python - 如何使用 xlrd、xlwt 和 xlutils 将 "existing"工作表添加到工作簿

python - NumPy 数组的反向堆叠操作

python - 如何删除 Python 类中隐式传递的 self ?

python - 查找字符串之间的差异

python - 创建具有递增整数的变量

python - 将查找节点与二叉树混淆

Python TA-lib安装错误,如何解决?