【发布时间】:2019-01-12 09:17:37
【问题描述】:
我需要在像 ACACA 这样的字符串中找到像 'ACA' 这样的子字符串的计数。我尝试了count(str) 方法,但它只给了我 1 而不是 2。我怎样才能找到这些字符串在 python 中的实际出现次数?
【问题讨论】:
我需要在像 ACACA 这样的字符串中找到像 'ACA' 这样的子字符串的计数。我尝试了count(str) 方法,但它只给了我 1 而不是 2。我怎样才能找到这些字符串在 python 中的实际出现次数?
【问题讨论】:
countmethod of strings 的文档说:
返回 [start, end] 范围内子字符串 sub 的非重叠出现次数。
您的子字符串重叠,这就是count 方法没有达到您想要的效果的原因。您可以使用find 方法的可选参数从字符串开头以外的位置开始查找您的计数:
string = 'ACACA'
substr = 'ACA'
substr_count = 0
start = 0
while True:
loc = string.find(substr, start)
if loc == -1:
break
substr_count += 1
start = loc + 1
此例程的循环计数与您的子字符串在字符串中出现的次数相同。您可以使用更简单的例程来检查字符串的每个位置以查看子字符串是否在该位置,但这需要更多循环并且会更慢。
【讨论】: