在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)
答案 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 +=
会将其添加到您的计数器中。
这使事情足够清楚吗?
顺便说一句,请学习使用描述性变量名。从长远来看,大写字母和小写字母混用一个字母的名字是一个坏习惯。