如何计算给定子字符串在Python字符串中出现的次数?
例如:
>>> 'foo bar foo'.numberOfOccurrences('foo')
2
若要获取子字符串的索引,请参见如何查找子字符串的所有出现?。
如何计算给定子字符串在Python字符串中出现的次数?
例如:
>>> 'foo bar foo'.numberOfOccurrences('foo')
2
若要获取子字符串的索引,请参见如何查找子字符串的所有出现?。
当前回答
在Python 3中,要查找字符串中子字符串的重叠情况,该算法将执行以下操作:
def count_substring(string,sub_string):
l=len(sub_string)
count=0
for i in range(len(string)-len(sub_string)+1):
if(string[i:i+len(sub_string)] == sub_string ):
count+=1
return count
我亲自检查了这个算法,它是有效的。
其他回答
String.count (substring),例如:
>>> "abcdabcva".count("ab")
2
这是针对非重叠事件的。 如果你需要计算重叠的次数,你最好检查这里的答案,或者检查下面我的其他答案。
在Python 3中,要查找字符串中子字符串的重叠情况,该算法将执行以下操作:
def count_substring(string,sub_string):
l=len(sub_string)
count=0
for i in range(len(string)-len(sub_string)+1):
if(string[i:i+len(sub_string)] == sub_string ):
count+=1
return count
我亲自检查了这个算法,它是有效的。
s = input('enter the main string: ')
p=input('enter the substring: ')
l=[]
for i in range(len(s)):
l.append(s[i:i+len(p)])
print(l.count(p))
根据你的真正意思,我提出以下解决方案:
你的意思是一个空格分隔子字符串的列表,并想知道所有子字符串中的子字符串位置编号是什么: S = 'sub1 sub2 sub3' s.split () .index(“sub2”) > > > 1 你的意思是子字符串在字符串中的char-position: s.find(“sub2”) > > > 5 你的意思是su-bstring的(非重叠)外观计数: s.count(“sub2”) > > > 1 s.count(“子”) > > > 3
这将列出字符串中所有出现的(也是重叠的)并对它们进行计数
def num_occ(str1, str2):
l1, l2 = len(str1), len(str2)
return len([str1[i:i + l2] for i in range(l1 - l2 + 1) if str1[i:i + l2] == str2])
例子:
str1 ='abcabcd'
str2 = 'bc'
将创建这个列表,但只保存BOLD值:
[ab, bc, ca, ab, bc, cd]
返回:
len([bc, bc])