1.定义:
用 变量 = " “/’ '(单行)或”"" “”"/’’’ ‘’’(多行)
2.下标(索引):
正方向:从0开始,反方向:从-1开始
找字符:变量[ 下标 ]
3.不允许修改
4.切片:
如:s [ 起始:终止:步长 ]
5.内置函数:
len( ):求字符串的长度
type( ):求类型
max ( ):最大值
min ( ) :最小值
6.编码:
GB2312:采用16位 第一个中文编码集
GBK:大约4万多个汉字
UTF-8: 24位,全世界语言的编码集(1-9,a-z,A-Z:占8位,其余占24位)
7.字符串的操作
s = "123as"
s.count("x") #统计s中x出现的次数
s.count("x",3,12) #统计从3到12中x的出现次数
s.isalpha() #判断s是否为纯字母(包含汉字)
s.isdigit() #判断s是否为纯数字
s.isalnum() #判断s是否为字母数字组合
s.lower() #转小写
s.upper() #转大写
s.split("x") #将s以x为界产分 ['',''] 形式
s.ljust(10,"*") #将s变为10个字符,不足用 * 向右补齐
s.rjust(10,"*") #同上,向左补齐
s.startswith("x") #是否以x开始
s.endswith("s") #是否以x结束
s.find("x") #查找,会找到要找字符的下标,若找不到则返回-1
s.index("x") #同上,找不到会报错
s.rstrip("x") #去右x(默认为空格)
s.lstrip("x") #去左x(默认为空格)
s.strip("x") #去左右x(默认为空格)
s.replace("x","y",2) #用y替换x,换两个(若不打2,则全替换)
"_".join(s) #用“_”把s的各个字符隔开
b=s.encode(encoding="UTF-8") #编码
b.decode(encoding="UTF-8") #解码(解与编要用一个编码集)
s.rfind() #查找,从右向左找
s.rindex() #查找,从右向左找
sorted(s) #排序
for i in s: #把字符s中的每个字母赋值给i参与循环
8.练习题
# 1.
# 字符串解析, 现有一字符串, "卡巴斯基#杀毒软件#免费版#俄罗斯#", 解析出每个元素。
s="卡巴斯基#杀毒软件#免费版#俄罗斯#"
print(s.split("#"))
# 2.
# "那车水马龙的人世间,那样地来 那样地去,太匆忙"
# 最后一次出现
# "那"
# 的位置。
s="那车水马龙的人世间,那样地来 那样地去,太匆忙"
print(s.find("那",11))
# 3.
# 判断输入的字符串是否是 .py 结束
s="ugiujkbnk.py"
print(s.endswith(".py"))
# 有一身份证号, 判断此为男还是女, 基于此方法, 写一个算法, 判断一个身份证号为男还是女。(身份证分15位和18位)
shen_fen_zheng_hao = int(input("请输入你的身份证号"))
shen_fen_zheng_hao = str(shen_fen_zheng_hao)
if len(shen_fen_zheng_hao) == 15:
if int(shen_fen_zheng_hao[-1])%2==0:
print("女")
else:
print("男")
if len(shen_fen_zheng_hao) == 18:
if int(shen_fen_zheng_hao[-2])%2==0:
print("女")
else:
print("男")
# 4.
# 有如下格式的字符串name - age - sex - address, 解析出姓名, 年龄等信息。
s="name - age - sex - address"
print(s.split("-"))
# 5.
# 求出字符串中有多少种字符,以及每个字符的个数
# 例如有字符串
# str = "apple is a apple.";
# 结果应该是
# a: 3
# p: 4
# l: 2
# e: 2
# :3
# i: 1
# s: 1
# .:1
#
s="apple is a apple."
s_=""
for i in s:
if i not in s_:
s_ += i #得出s中有多少种字符
for j in s_:
print(j,":",s.count(j)) #打印出s_中各个字符再s中出现的个数
# 6.
# 用来去掉字符串右边的空格
s=input("请输入字符:")
print(s.rstrip())
#
# 7.
# 定义一个方法,将str所指字符串的正序和反序进行连接, 例如
# "ok"->"okko"
s=input("请输入字符:")
s1=s[-1::-1]
print(s+s1)
# 8.
# 字符串右移n位, 例如
# "hello world"
# 右移两位ldhellowor
s=input("请输入字符:")
m=int(input("向右移动几位:"))
s1=s[0:len(s)-m:1]
s2=s[len(s)-m:len(s)+1:1]
print(s2+s1)
# 9.
# 求5个字符串中最长的那个,把最长的字符串打印出来
s1 = "asdfdf"
s2 = "sdsfd"
s3 = "asdsf"
s4 = "s"
s5 = "sdsd"
d = max(len(s1),len(s2),len(s3),len(s4),len(s5))
if len(s1) == d:
print(s1)
elif len(s2) == d:
print(s2)
elif len(s3) == d:
print(s3)
elif len(s4) == d:
print(s4)
elif len(s5) == d:
print(s5)
# 10.
# 若可以从一个源字符串中, 找到一个相符的字符串(忽略大小写), 则返回第一个字符的索引位置,否则返回 - 1。
s = input("请输入字符串:")
s1 = s.upper()
a = input("请输入你要找的字符串:")
a1 = a.upper()
print(s1.find(a1))
# 11.
# 判断一个字符串是否是回文
falg = False
s = input("请输入字符串:")
for i in range(0,len(s)):
if s[i] != s[-i-1]:
falg = True
break
if falg:
print("不是回文数")
else:
print("是回文数")
s = "asdfggfdsa"
if s == s[-1::-1]:
print("shi ")
# 12.
# 如下字符串, 01 # 张三#20-02#李四#30-03#王五#40。。。。。。,解析每个人分数多少。样式如下:
# 01
# 张三
# 20
# 02
# 李四
# 30
# 03
# 王五
# 40。并且计算总分。
s="01#张三#20-02#李四#30-03#王五#40"
s1=str(s.split("-"))
s1=s1.strip("[]")
s3=s1.replace("#"and",","\n")
s5=s3.replace("'","")
s6=s5.replace(" ","")
s4=s6.replace("#","\n")
# ???????????????????????????????????????
# ???????????????????????????????????????
#
# print(s4,)
# 编程.
# 1.
# 已知字符串:"this is a test of python".
# 按要求执行以下操作:
# (1)
# 统计该字符串中字母s出现的次数
s="this is a test of python"
print(s.count("s"))
# (2)
# 取出子字符串
# "test"
s="this is a test of python"
print(s[s.find("test"):s.find("test")+len("test")])
# (3)
# 将字符串中每个单词的第一个字母变成大写, 输出到控制台。
# ??????????????????????
s3 = "hello world"
arr = s3.split(" ")
new_str = f'{arr[0].capitalize()} {arr[1].capitalize()}'
print(new_str)
# ??????????????????????
s="this is a test of python"
print(s.title())
# (4)
# 用两种方式实现该字符串的倒叙输出。
s="this is a test of python"
print(s[-1::-1])
# !!!!!!!!!!!!!!!!!!!
print("".join(reversed(s)))
for i in range(-1,-len(s)-1,-1):
print(s[i],end="")
# 2.
# 获取一个字符串在另一个字符串中出现的次数
# 例如, 获取
# "kk"
# 在
# "abkkcdkkefkkskk"
# 中出现的次数
s="abkkcdkkefkkskk"
print(s.count("kk"))
# 3.
# 去除字符串两端的逗号
s=",abkkcdkkefkkskk,"
print(s.strip(","))
# 4.
# 将一个字符串进行反转
# 将字符串中指定部分进行反转,"abcdefgeee";
s="abcdefgeee"
print(s[-1::-1])
m=int(input("请输入指定部分"))
s2=s[1:len(s)-m:]
print(s2[-1::-1])
# 5.
# 获取两个字符串中最大相同子串
# 例如找到字符串
# "abcwerthelloyuiodef"
# 和
# "cvhellobnm"
# 中的最大相同字串
# 此题,应该从子串的长度考虑。
# 思路:
# 1,将短的那个子串按照长度递减的方式获取到。
# 2,将每获取到的子串去长串中判断是否包含,如果包含,已经找到!。
falg = False
s1 = 'abcwerthelloyuiodef'
s2 = 'cvhellobnm'
for i in range(0,len(s2)):
m=s2[i-1:i:]
if m in s1:
for j in range(i-1,len(s2)):
n=s2[i-1:j:]
if n in s1:
if len(n) >4:
print(n)
# 6.
# 给你一组字符串如:iu7i8hy4jnb2,让你编程输出里面的数字:
for i in "iu7i8hy4jnb2":
if i.isdigit():
print(i,end="")
# 7.
# 假设字符串类似这样的aba和aab就相等,现在随便给你二组字符串,请编程比较他们看是否相等
s1 = "acdbegf"
s2 = "acbdegf"
if sorted(s1)==sorted(s2): #sorted :排序
print("相等")
else:
print("不相等")