Python 查找子串在字符串中第n次出现的方法
创建一个Python程序,给定一个字符串和它的子串,找出该字符串的第n次出现。让我们来谈谈完成这项工作的几种方法。
使用regex来查找子串在字符串中的第N次出现。
在这里,我们使用regex re.finditer来定位字符 “ab “在第四位置的索引()。
import re
# Initialising values
ini_str = "cdcdcdcdcdcd"
substr = "cd"
occurrence = 3
# Finding up the nth occurrence of the substring
Inilist1 = [m.start() for m in re.finditer(r"ab", ini_str)]
if len(inilist1)>= 4:
# Printing of the result
print ("Nth occurrence of the substring is at", inilist1[occurrence-1])
else:
print ("No {} occurrence of the substring lies in the given string".format(occurrence))
输出
Nth occurrence of the substring is at 6
使用find()方法来查找字符串中子串的第N个实例
在这里,我们使用str.find函数来确定字符 “cd “在第四位()的索引。
默认的起始索引和终止索引是0和length-1,如果没有指定起始索引,终止索引将被排除在我们的搜索之外。
find()方法类似于index方法()。唯一的区别是,index()在这种情况下会抛出一个错误,而find()在确实找不到所寻找的字符串时返回-1。
# Initialising the values
ini_str = "cdcdcdcdcdcd"
sub_str = "cd"
occurrence = 4
# Finding of the nth occurrence of substring
val = -1
for i in range(0, occ)
val = ini_str.find(sub_str, val + 1)
# Printing up the nth occurrence
print ("Nth occurrence is at the value", val)
输出
Nth occurrence is at 6
使用startwith()查找字符串中子串的第n个实例()
这里,我们使用str.startwith函数来确定字符 “cd “在第四位的索引()。
另一种在系列或数据框架中搜索和过滤文本数据的技术是Pandas startswith()。这个方法与Python的startwith()方法相当,但是它只对Pandas对象起作用,并且有不同的参数。因此。为了让编译器识别此方法与默认函数的不同,在调用此方法之前,必须始终将str作为前缀。
# Initialising up values
ini_str1 = "bdbdbdbdbdbd"
substr1 = "bd"
occurrence = 4
# Finding up the nth occurrence of the substring
Inilist1 = [i for i in range(0, len(ini_str1))
if ini_str1[i:].startswith(substr1)]
if len(inilist1)>= 4:
# Printing up the result
print ("Nth occurrence of the substring is at", inilist1[occurrence-1])
else:
print ("No {} occurrence of substring lies in given string".format(occ))
输出
Nth occurrence of the substring is at 6
使用split()查找一个字符串中的第n个片段实例()
在这里,我们使用 split 方法来确定字符 ‘ab’ 在第四个位置()的值。
Python的String split()函数使用定义的分隔符将给定的字符串分割成一个字符串集合。
def solve(s1, str1, n1):
sep = s1.split(st1r, n1)
if len(sep) <= n1:
return -1
return len(s1) - len(sep[-1]) - len(str1)
print('length: ', len('hpjava dellT javaTpointhp'))
print("position", solve('hpjava dellT javaTpointhp', 'hp', 2))
输出
length: 35
position 31