每次在另一个字符串中找到一个字符串时Python计数

每次在另一个字符串中找到一个字符串时Python计数,python,Python,我试图枚举程序在较长文本中找到特定字符串的时间,但我卡住了,程序显示的是响应字符串的长度,而不是响应中出现的时间ultrias。代码如下: ultrias = "am 17" response = "Hi i am 17, did you know I am 17" num = 0 for ultrias in response: num += 1 print (num) 您可以使用: 您可以使用: Python字符串有一个内置的str.count()方法可以做到这一点: ultria

我试图枚举程序在较长文本中找到特定字符串的时间,但我卡住了,程序显示的是响应字符串的长度,而不是响应中出现的时间
ultrias
。代码如下:

ultrias = "am 17"
response = "Hi i am 17, did you know I am 17"
num = 0
for ultrias in response:
    num += 1
print (num)
您可以使用:

您可以使用:


Python字符串有一个内置的
str.count()
方法可以做到这一点:

ultrias = "am 17"
response = "Hi i am 17, did you know I am 17"
print(response.count(ultrias))
输出

2
如果不允许您使用
str.count()
方法,您可以执行以下操作:

ultrias = "am 17"
response = "Hi i am 17, did you know I am 17"

count = 0
data = response[:]
while True:
    start = data.find(ultrias)
    if start < 0:
        break
    data = data[start + len(ultrias):]
    count += 1
print(count)
ultrias=“am 17”
回答=“你好,我17岁,你知道我17岁吗”
计数=0
数据=响应[:]
尽管如此:
开始=数据。查找(ultrias)
如果开始<0:
打破
数据=数据[start+len(ultrias):]
计数+=1
打印(计数)
但我不推荐

这两种算法都不能处理重叠匹配,但第二个示例可以很容易地修改为:

count = 0
data = response[:]
while True:
    start = data.find(ultrias)
    if start < 0:
        break
    data = data[start + 1:]
    count += 1
print(count)
count=0
数据=响应[:]
尽管如此:
开始=数据。查找(ultrias)
如果开始<0:
打破
数据=数据[开始+1:]
计数+=1
打印(计数)

Python字符串有一个内置的
str.count()
方法可以做到这一点:

ultrias = "am 17"
response = "Hi i am 17, did you know I am 17"
print(response.count(ultrias))
输出

2
如果不允许您使用
str.count()
方法,您可以执行以下操作:

ultrias = "am 17"
response = "Hi i am 17, did you know I am 17"

count = 0
data = response[:]
while True:
    start = data.find(ultrias)
    if start < 0:
        break
    data = data[start + len(ultrias):]
    count += 1
print(count)
ultrias=“am 17”
回答=“你好,我17岁,你知道我17岁吗”
计数=0
数据=响应[:]
尽管如此:
开始=数据。查找(ultrias)
如果开始<0:
打破
数据=数据[start+len(ultrias):]
计数+=1
打印(计数)
但我不推荐

这两种算法都不能处理重叠匹配,但第二个示例可以很容易地修改为:

count = 0
data = response[:]
while True:
    start = data.find(ultrias)
    if start < 0:
        break
    data = data[start + 1:]
    count += 1
print(count)
count=0
数据=响应[:]
尽管如此:
开始=数据。查找(ultrias)
如果开始<0:
打破
数据=数据[开始+1:]
计数+=1
打印(计数)
使用string.count(string)获取所需内容

>>> find = "am 17"
>>> string = "Hi I am 17, did you know I am 17"
>>> string.count(find)
2
使用string.count(string)获取所需内容

>>> find = "am 17"
>>> string = "Hi I am 17, did you know I am 17"
>>> string.count(find)
2

通过
re
模块

>>> ultrias = "am 17"
>>> response = "Hi i am 17, did you know I am 17"
>>> print(len(re.findall(ultrias, response)))
2

通过
re
模块

>>> ultrias = "am 17"
>>> response = "Hi i am 17, did you know I am 17"
>>> print(len(re.findall(ultrias, response)))
2

其他人用几种不同的方法来满足您的需求,但是,没有人解释为什么代码的输出是输入字符串的长度

for
循环有一个循环变量,该变量从正在迭代的对象中赋值。在对象是字符串的情况下,for循环将按顺序在字符串中的每个字符上迭代,将该字符分配给循环变量,例如

>>> for i in "Hi there":
...     print i
... 
H
i

t
h
e
r
e
因此,您可以看到,
i
依次分配了字符串“Hi there”中的一个字符。代码中也发生了同样的情况:
ultrias
是循环变量,正在从字符串
中分配连续字符“嗨,我17岁了,你知道我17岁吗”

输出将是:

H
i

i

a
m

1
7
.
.
.

3

还请注意,循环终止后,
ultrias
的值是循环分配给它的最后一个值-不是
“am 17”
,而是
“7”
,其他人用几种不同的方法来满足您的要求,但是,没有人解释为什么代码的输出是输入字符串的长度

for
循环有一个循环变量,该变量从正在迭代的对象中赋值。在对象是字符串的情况下,for循环将按顺序在字符串中的每个字符上迭代,将该字符分配给循环变量,例如

>>> for i in "Hi there":
...     print i
... 
H
i

t
h
e
r
e
因此,您可以看到,
i
依次分配了字符串“Hi there”中的一个字符。代码中也发生了同样的情况:
ultrias
是循环变量,正在从字符串
中分配连续字符“嗨,我17岁了,你知道我17岁吗”

输出将是:

H
i

i

a
m

1
7
.
.
.

3
还请注意,循环终止后,
ultrias
的值是循环分配给它的最后一个值-不是
“am 17”
,而是
“7”

您需要计算重叠出现的次数吗?说出
17171
171
的时间是多少?一个或两个?您需要计算重叠发生的次数吗?说出
17171
171
的时间是多少?一两个?