Python-比较字符串并计算显示时间

Python-比较字符串并计算显示时间,python,Python,我无法计算b在a中出现了多少次 输入:a=abcdebcf,b=bc 因此,输出应为count=2,因为bc在a中出现2次 def maxcount(a, b): sum = 0 for t in s: s = s.replace(t, '') sum += 1 return sum 我的代码将b中的每个字母与a中的每个字母进行比较。然后数一数。我的代码的示例输出是:count=4。它应该是2。使用

我无法计算b在a中出现了多少次

输入:a=abcdebcf,b=bc

因此,输出应为count=2,因为bc在a中出现2次

def maxcount(a, b):
        sum = 0
        for t in s:
            s = s.replace(t, '')
            sum += 1
        return sum

我的代码将b中的每个字母与a中的每个字母进行比较。然后数一数。我的代码的示例输出是:count=4。它应该是2。

使用带有
re
模块的正则表达式来匹配您的模式:

>>> import re
>>> a = 'abcdebcf'
>>> b = 'bc'
>>> re.findall('bc', a)
['bc', 'bc']

>>> len(re.findall('bc', a))
2
你可以这样定义你的函数

def maxcount(a, b):
    import re
    return len(re.findall(b, a))

print maxcount('abcdebcf', 'bc')

2

更新:根据您的评论,您需要的是一个递归函数。这看起来会不一样,就像

import re

total = 0
a = 'xxyy'
b = 'xy'

while a:
    b_in_a = len(re.findall(b, a))
    if b_in_a < 1:
        break

    total += b_in_a
    a = a.replace(b, '')

print total
2
重新导入
总数=0
a='xxyy'
b='xy'
而a:
b_in_a=len(关于findall(b,a))
如果b_in_a<1:
打破
总计+=b_in_a
a=a。替换(b,“”)
打印总数
2.

将正则表达式与
re
模块一起使用,以匹配您的模式:

>>> import re
>>> a = 'abcdebcf'
>>> b = 'bc'
>>> re.findall('bc', a)
['bc', 'bc']

>>> len(re.findall('bc', a))
2
你可以这样定义你的函数

def maxcount(a, b):
    import re
    return len(re.findall(b, a))

print maxcount('abcdebcf', 'bc')

2

更新:根据您的评论,您需要的是一个递归函数。这看起来会不一样,就像

import re

total = 0
a = 'xxyy'
b = 'xy'

while a:
    b_in_a = len(re.findall(b, a))
    if b_in_a < 1:
        break

    total += b_in_a
    a = a.replace(b, '')

print total
2
重新导入
总数=0
a='xxyy'
b='xy'
而a:
b_in_a=len(关于findall(b,a))
如果b_in_a<1:
打破
总计+=b_in_a
a=a。替换(b,“”)
打印总数
2.

对于您的特定示例,另一个简单的替代方法是使用函数。在您的情况下,重叠没有问题

a = "abcdebcf"
b = "bc"
count = a.count(b)
print(count)
编辑:

根据评论中提出的要求,我正在添加另一种方法,以解决更换后出现的次数。检查此功能。它将替换并继续计数,直到找到实例为止

import re
a = "xxyy"
b = "xy"
count = 0
while True:
    a, c = re.subn(b, '', a)
    count += c
    if c == 0:
        break
print(count)

对于您的特定示例,另一个简单的替代方法是使用函数。在您的情况下,重叠没有问题

a = "abcdebcf"
b = "bc"
count = a.count(b)
print(count)
编辑:

根据评论中提出的要求,我正在添加另一种方法,以解决更换后出现的次数。检查此功能。它将替换并继续计数,直到找到实例为止

import re
a = "xxyy"
b = "xy"
count = 0
while True:
    a, c = re.subn(b, '', a)
    count += c
    if c == 0:
        break
print(count)
您可以尝试以下方法:

sum = 0
c = ''
for letter in a:
    c = c + letter

    if b in c: 
        sum += 1
        c = ''
return sum
您可以尝试以下方法:

sum = 0
c = ''
for letter in a:
    c = c + letter

    if b in c: 
        sum += 1
        c = ''
return sum

所以,如果我们计算bc,然后把它从a字符串中去掉,如果在我们去掉后,新字符串创建了一个新的bc。。那么我们如何将其计入maxcount?我不确定我是否理解,您想创建一个新字符串而不出现
bc
事件?向函数传递字符串(
param a
)和要匹配的模式(
param b
)输入:a=xxyy,b=xy。然后我们从xxyy计数1中取xy。。然后它创建一个新字符串xy。。然后我们还有1个xy,所以我们需要将新的xy计算到MaxCount中。这将返回1,因为
xy
在字符串中显示1。尝试函数xxyy我们数1,然后取下该xy(中间的xy),然后第一个x和最后一个y创建一个新的xy。。然后我们需要计算总数,所以总数应该是2so,如果我们计算bc,那么把它从a字符串中去掉,如果在我们去掉之后,新字符串创建了一个新的bc。。那么我们如何将其计入maxcount?我不确定我是否理解,您想创建一个新字符串而不出现
bc
事件?向函数传递字符串(
param a
)和要匹配的模式(
param b
)输入:a=xxyy,b=xy。然后我们从xxyy计数1中取xy。。然后它创建一个新字符串xy。。然后我们还有1个xy,所以我们需要将新的xy计算到MaxCount中。这将返回1,因为
xy
在字符串中显示1。尝试函数xxyy我们数1,然后取下该xy(中间的xy),然后第一个x和最后一个y创建一个新的xy。。然后我们需要计算总数,所以总数应该是2tank,但是这个怎么样:如果a=xxyy,b=xy,那么我们计算1,然后我们去掉这个xy(中间的xy),然后第一个x和最后一个y创建一个新的xy。。然后我们需要计算xy,所以总数应该是2。怎么做?检查答案。我已经按照你的要求编辑了我的答案。希望对您有所帮助。:)我要找的是该程序可以为任何字符串工作!谢谢,但是这样如何:如果a=xxyy,b=xy,那么我们计算1,然后我们去掉这个xy(中间的xy),然后第一个x和最后一个y创建一个新的xy。。然后我们需要计算xy,所以总数应该是2。怎么做?检查答案。我已经按照你的要求编辑了我的答案。希望对您有所帮助。:)我要找的是该程序可以为任何字符串工作!