Python字符串

236 阅读2分钟

查找

  1. in 和 not in :判断某个字符串是否为待判断的字符串的子串,返回True和False
  2. 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)