我正在编写一个脚本,脚本应该读取一个文本文件并测试以确定每行上是否有指定的字母(a,a,r,d,v,a,r,k).我有一个问题,因为我试图检查3个不同的a而不是一个.我的代码如下:
#Variables
advk = ['a','a','r','d','v','a','r','k']
textfile = []
number = 0
life = 0
for line in open('input.txt', 'rU'):
textfile.append(line.rstrip().lower())
while life == 0:
if all(word in textfile[number] for word in advk):
printed = number + 1
print ("Aardvark on line " + str(printed))
number+=1
if number == len(textfile):
life+=1
else:
number+=1
Run Code Online (Sandbox Code Playgroud)
每次你想在python中计算一些东西时,请记住Counter类.
from collections import Counter
advk = Counter(['a','a','r','d','v','a','r','k'])
with open('input.txt', 'rU') as file:
for i, line in enumerate(file.readlines()):
if not advk - Counter(line.lower()):
print ("Aardvark on line " + str(i+1))
Run Code Online (Sandbox Code Playgroud)
给定输入线
dffdaardvarksdsda
柜台看起来像这些
Counter({'d': 5, 'a': 4, 'f': 2, 's': 2, 'r': 2, 'k': 1, 'v': 1})
Run Code Online (Sandbox Code Playgroud)
和
Counter({'a': 3, 'r': 2, 'd': 1, 'k': 1, 'v': 1})
Run Code Online (Sandbox Code Playgroud)
用于搜索的字母列表.
我们通过简单地减去两个计数器advl - Counter(line.lower())并检查结果计数器是否没有剩余元素来使用技巧.
其他注意事项:
您可以使用with语句来确保文件关闭.
您可以使用枚举而不是计算行号.
| 归档时间: |
|
| 查看次数: |
188 次 |
| 最近记录: |