在“ for”循环中使用readlines()和count()?

时间:2018-10-09 16:03:53

标签: python string function for-loop readlines

在Codio中,获取文件,搜索文件的次数是一个挑战。 字符串出现在其中,然后打印该数字。我可以使用一些建议来获得结果,但是在某些方面我仍然不清楚。

主要问题是,循环在什么时候搜索子字符串S?我到处都看到的count()语法涉及使用要搜索的字符串,然后是点运算符,然后是带有我们要查找的子字符串的函数作为参数。类似于:P.count(S)

让我感到困惑的是,该函数正在使用line代替P。那么这是否意味着函数正在line中搜索子字符串?如果是这样,如果line仅是for循环的计数器变量,那将如何工作?我只是想更清楚地了解此函数在这种情况下的工作方式,以便让我正确地统计子串S在文件P中出现的次数。

import sys
P= sys.argv[1]
S= sys.argv[2]

# Your code goes here

f = open(P, 'r')
c = 0

for line in f.readlines():
  c += line.count(S)

print(c)

2 个答案:

答案 0 :(得分:1)

  

这是否意味着函数正在“行”中搜索子字符串

是的,这就是它的意思。 line的值在每次循环迭代中都会更改。

  

如果是这样,如果“行”只是“ for”循环的计数器变量,那么该如何工作

不是。 Python for循环没有计数器。 line是实际的文本行。

for letter in ['A', 'B', 'C']:
    print(letter)

打印

A
B
C

答案 1 :(得分:0)

我们来剖析循环:

for line in f.readlines():
  c += line.count(S)

f是打开文件的文件描述符。

readlines generator ,是一种函数,可以返回文件的行。如果您将其视为一个字符串列表,每个字符串都是文件的一行,那么您将足够接近以了解循环操作。

因此,语句for line in f.readlines():遍历文件内容中的变量line;在每次循环迭代中,line将是适当的字符串值,即文件的下一行。

因此,line.count(S)返回目标字符串S在文件的该行中出现的次数。递增c +=会将其添加到您的计数器中。

这使事情足够清楚吗?


顺便说一句,请学习使用描述性变量名。从长远来看,大写字母和小写字母混用一个字母的名字是一个坏习惯。