我有一个带有序列号的文本文档,我想创建一个程序,在其中运行一个函数,告诉您某个序列号在文本文档中出现了多少次。我希望参数是无限的意义上,我可以要求3个不同的序列号或只有1
list of serial numbers:
pmos_4e
nmos_4e
pmos_4t
pmos_4f
nmos_4t
nmos_4f
pmos_4e
nmos_4e
pmos_4t
pmos_4f
nmos_4t
nmos_4f
pmos_4e
nmos_4e
pmos_4t
pmos_4f
nmos_4t
nmos_4f
pmos_4e
nmos_4e
pmos_4t
pmos_4f
nmos_4t
nmos_4f
pmos_4e
nmos_4e
pmos_4e
nmos_4e
pmos_4t
pmos_4f
nmos_4t
nmos_4f
pmos_4t
pmos_4f
nmos_4t
nmos_4f
current code:
def find_serial(*serial):
f = open('C:/Users/joann/Desktop/pmos.txt', 'r')
for z in range(len(serial)):
x = 0
lines = f.readlines()
for i in lines:
if (serial[z-1] in i):
x += 1
print(x)
f.close()
当我运行它时,我得到第一个值出现的次数,但它将其余值显示为0
>>> find_serial('pmos_4e', 'nmos_4e', 'pmos_4t', 'pmos_4f')
6
0
0
0
您只看到第一个值,因为您只持有一个计数器并单独递增它
实现目标的最佳方法是简单地使用collections.counter:
然后你可以简单地做:
去拿你要找的号码
最后的代码应该是这样的:
(如您所见,不需要两个循环…)
解决方案更新
同样的解决方案,但我注意到您想同时将所有参数传递给函数,所以我重写了它,这样您就可以按原来的方式执行
find_serial
函数了原始解决方案
使用
f.read().split()
将为我们提供一个文本中每个单词的列表,由于所有这些序列都是一个单词,因此这是一个很好的机会来使用它。然后我们可以用for i in contents
来比较i
和我们的serial
并增加x
计数输出
相关问题 更多 >
编程相关推荐