Python:如何递归搜索.txt文件,查找匹配项和打印结果

时间:2016-08-07 18:39:10

标签: python-2.7 recursive-descent

我一直在寻找答案,但似乎无法得到我需要的东西。我想要一个python脚本,它读取我的文本文件,从顶部开始,通过文件的每一行,然后打印出另一个txt文件中的所有匹配。文本文件的内容只是4位数字,如1234。 例 1234 3214 4567 8963 1532 1234 ...等等。 我希望输出类似于: 1234:匹配发现= 2 我知道文件中有匹配几乎10000行。我感谢任何帮助。如果有人能指出我正确的方向,这将是伟大的。谢谢。

3 个答案:

答案 0 :(得分:0)

import re

file = open("filename", 'r')
fileContent=file.read()
pattern="1234"
print len(re.findall(pattern,fileContent))

答案 1 :(得分:0)

如果我是你,我会打开文件并使用split方法创建一个包含所有数字的列表,并使用集合中的Counter方法来计算列表中每个数字的重复数量。 `

from collections import Counter

filepath = 'original_file'
new_filepath = 'new_file'

file = open(filepath,'r')
text = file.read()
file.close()

numbers_list = text.split('\n')
numbers_set = set(numbers_list)

dupes = [[item,':matches found =',str(count)] for item,count in Counter(numbers_list).items() if count > 1]
dupes = [' '.join(i) for i in dupes]


new_file = open(new_filepath,'w')
for i in dupes:
    new_file.write(i)
new_file.close()

`

答案 2 :(得分:0)

感谢所有帮助过我的人。感谢@csabinho提供他提供的代码,感谢@IanAuld问我“为什么你认为你需要递归呢?” - IanAuld。这让我觉得解决方案很简单。我只是想知道哪些4位数字有重复和多少,以及哪些4位数组合是唯一的。所以这就是我想出来的,而且效果很好!

import re

a=999
while a <9999:
a = a+1

file = open("4digits.txt", 'r')
fileContent = file.read()

pattern = str(a)
result = len(re.findall(pattern, fileContent))
if result >= 1:
    print(a,"matches",result)
else:
    print (a,"This number is unique!")