查找
- in 和 not in :判断某个字符串是否为待判断的字符串的子串,返回True和False
- str.find(sub):查找某个字符串中,是否存在子串sub,如果存在返回子串位置,否则返回-1
统计个数
str.count(sub):查找子串sub的个数
代码:
s = "fine thank you and you"
print(s.count("you"))
# 从索引12开始查找
print(s.count("you",12))
# 从索引1到10(不包括)
print(s.count("you",1,10))
输出结果:
2
1
0
替换
str.replace(old,new):把旧的字符串替换成新的字符串
代码:
s = "fine thank you and you"
print(s.replace("you","tom"))
print(s.replace("you","tom",1))
输出结果:
fine thank tom and tom
fine thank tom and you
其他
a = "Hello"
b = "BYTEDancer"
# 字符串计算
c = a + b
print(c)
d = a * 4
print(d)
# 字符串切片 【0 -1】
e = b[3]
print(e)
f = b[-2]
print(f)
g = b[3:-1]
print(g)
h = b[:3]
print(h)
# 字符串转换
k = str(3.14)
print(k)
l = b.upper()
print(l)
m = b.lower()
print(m)
# 字符串长度统计
n = len(b)
print(n)
# 字符串格式
o = "X:{},Y:{},Z:{}".format(a,b,c)
print(o)
p = "X:{1},Y:{0},Z:{2}".format(a,b,c)
print(p)
比较
两个字符串比较大小的规则是,第一个不同的字符大则更大
null<" "<"0"<"9"<"A"<"Z"<"a"<"z"
例题:烬寂海之谜
问题描述
在烬寂海中居住着某种智慧生物。它们的文明发展程度相当于地球上的中世纪,但是它们拥有强大的科技与魔法。
一天,王国的法师得到了一段古老的魔法咒文,咒文中似乎隐藏着巨大的能量,但是咒文中有很多相似的字符串片段,法师们相信这些片段与魔法的启动有关。
现在,国王决定招募聪明的你,使用你的技术能力来帮助法师们解开这个谜团。
现在给你一个字符串 SS(主串),还有若干个模式串 PP。你需要统计每一个模式串在主串中出现的次数。
输入格式
第一行:一个字符串 SS,表示主串,只包含小写英文字母。
第二行:一个整数 nn,表示有 nn 个模式串。
接下来的 nn 行:每行一个字符串,代表一个模式串 PP,只包含小写英文字母。
输出格式
n 行,每行一个整数,表示对应模式串在主串中出现的次数。
样例输入
bluemooninthedarkmoon
3
moon
blue
dark
样例输出
2
1
1
注意:
不能使用count,比如aa在aaaa中以模式匹配的思想出现了3次,但是用count只出现了2次。
import os
import sys
# 请在此输入您的代码
s = input()
l = len(s)
n = int(input())
for j in range(n):
p = input()
cnt = 0
for i in range(len(s)-len(p)+1):
if p == s[i:i + len(p)]:
cnt += 1
print(cnt)