在Fi中查找单词

2024-09-27 17:47:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着从一个文件中读出输入文件一行一行。然后我需要检查每一行,看看行中的字母是否可以用来组成“土豚”。也可以使用大写字母,字母可以分散在整行中。文本文件的内容包括:

No aardv*rks here!

Only armadillos and anteaters.

Animals are run down: very awful road kill.

I prefer a quick guacamole made from avocados.

所以第3行和第4行只应该返回一个正值,例如“第3行的Aardvark”。在

我已经走了这么远-我被卡住了!在

^{pr2}$

请理解,我正在学习初学者教程,所以没有任何疯狂和花哨的功能,会打击我的小,脆弱的心灵,请!!在

非常感谢。在

编辑

这是最终奏效的解决方案。再次感谢您的贡献!在

file = open('input.txt').read().lower() 
listed = file.split('\n')  
for index, sentence in enumerate(listed):
  a = sentence.count('a')
  r = sentence.count('r')
  d = sentence.count('d')
  v = sentence.count('v')
  k = sentence.count('k')
  if a>=3 and r>=2 and d>=1 and v>=1 and k>=1:
    print('Aardvark on line '+str(index+1))

Tags: and文件no内容indexcount字母大写字母
3条回答

我知道这是一个旧的线程,但对于那些通过Grok执行此任务的人来说,下面的代码只使用到目前为止在本课程中所学的内容。希望你觉得有用!在

count = 0
with open('input.txt') as f:
  for line in f:
    count += 1
    l = line.lower()
    a = l.count('a')
    d = l.count('d')
    k = l.count('k')
    r = l.count('r')
    v = l.count('v')
    if a >= 3 and d >= 1 and k >= 1 and r >=2 and v >=1:
      print('Aardvark on line', count)
for n, line in enumerate(open('input.txt')):
  letters = list('aardvark')
  for c in line.lower():
    if c in letters:
      letters.remove(c)
  if not letters:
    print('Aardvark on line', n + 1)

open('input.txt').read()将文件的全部内容读入内存。因此,如果input.txt是一个足够长的文件,计算机将耗尽其可用内存。相反,尝试使用文件迭代器一次读取一行,例如

for i,listed in enumerate(open('input.txt')):
    sentence = listed.lower()
    a = sentence.count('a')
    # ... etc.

另请参见In Python, why do we need readlines() when we can iterate over the file handle itself?。在

相关问题 更多 >

    热门问题