文章目录
str1 = '++123--'
str2 = ''
str3 = " [3,4,5] "
str4 = """
# hello
# woRld
# """
str5 = "123"
一、字符串拼接
1.使用+号连接字符串
s1 = '我'
s2 = '是'
s3 = '一个'
s4 = '好人'
s5 = s1 + s2 +s3 +s4
print(s5)
print(type(s5))
结果:
我是一个好人
<class 'str'>
2.使用,号连接字符串
s1 = '我'
s2 = '是'
s3 = '一个'
s4 = '好人'
s5 = s1,s2,s3,s4
print(s5)
print(type(s5))
结果:
('我', '是', '一个', '好人')
<class 'tuple'>
3.使用%连接字符串
print('%s%s%s%s'%('我','是','一个','好人'))
结果:我是一个好人
4.使用join函数连接字符串
list1 = ['hello','world','i','love','you']
print('王先生'.join(list1))
print('www.' 'baidu.com')
![Alt](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center
二、字符串常用方法
1.大小写转换
str1 = """
# hello
# woRld
# """
print(str1.upper()) #转换字符串中所有字母为大写
print(str1.lower()) #转换为小写
print(str1.swapcase()) #对字符串进行大小字母转换
print(str1.title()) #所有单词首字母转换为大写
>>> name = 'li qin'
>>>> name.title()
>'Li Qin'
2.找位置 str.find()检测字符串中是否包含子字符串str,返回下标
str1 = "[3,4,5,6]"
print(str1[3])
a = str1.find('6') #找一个字符找在字符串中的位置,6在第7位,[ 和 ,都算位置,find找不到会返回-1
b = str1.index('6') #index找不到会报错
print(a,b)
结果:
4
7 7
如果想要知道某个字符串是否包含在列表中,可以直接使用index方法判断。
如果包含了字符串中,返回该字符串第一次出现的位置;如果不包含,就会出错。
str1 = '12336'
b = str1.index('6')
print(b)
结果:4
3.替换 str.replace(str1,str2) 把字符串中的str1替换成str2
str1 = "[3,4,5,6]"
print(str1.replace(',','|')) #把逗号替换成|
#结果:[3|4|5|6]
4.去左右字符
**
Python strip()方法用于移除字符串首尾指定的字符串;当没有参数时,默认为空格和换行符。
**
str1 = '++++1234---'
str2 = ' 123'
print(str2.strip()) #str.strip()删除字符串开头和末尾的空格
print(str1.rstrip('-'))
print(str1.lstrip('+'))
print(str1.lstrip('+').rstrip('-'))
5.判断字符是否在字符串当中
isdigit() 如果字符串中包含数字则返回Ture,否则返回False
# print('hes' in 'hello')
False
6. 字符串取值
str3 = " [3,4,5] " #[3,4,5]想取里面的345
print(str3.index(']')) #确定右边]的值是11
print(str3.index('[')) #确定左边[的值是5
print(str3[6:11][::-1]) #所以我们要的范围是5~11,现在就是想该怎么样切片了,[::-1]倒序
例题1
只取出人名,不要逗号,打印的时候只打印人名。
做题思路
data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
print(data[::]) #想办法怎么能跳三个值去一下,跳三个取一下
while True: #死循环
print(data[:data.index(',')]) #data.index(',')逗号的位置是3,咋们先切一下,从头切到逗号之前
print(data[data.index(',') + 1:]) #下一次从data.index(',')往后切,不包括这个,就+1
break #跳出死循环
答案
data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
while True: #死循环
try:
print(data[:data.index(',')]) #data.index(',')逗号的位置是3,咋们先切一下,从头切到逗号之前
data = data[data.index(',') + 1:] #把之前的data顶替掉,用这个值给data赋值
except:
print(data)
break #当找不到最后的逗号就结束这个循环
7.字符串拆分、划分
data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
for i in data.split(','):
print(i)
8.遍历字符串
b = '12336'
for i in b:
print(i)
data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
for i in data:
print(i)
9.字符串合并
str.split()通过指定的分隔符对字符串进行切片,返回列表类型的数据,str.split() num=string.split(str))为分隔符截取字符串将字符串分割成列表
str.join(seq),以指定字符串作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串
###使用join函数连接字符串
1.
list1 = ['hello','world','i','love','you']
print('王先生'.join(list1))
#结果hello王先生world王先生i王先生love王先生you
2.
data = "刘晓庆|王晨晨|马天宇|张茯苓|柳灵儿"
print(data)
d = data.split('|')
print(d)
print('-'.join(d))
print('|'.join(d))
#结果:
刘晓庆|王晨晨|马天宇|张茯苓|柳灵儿
['刘晓庆', '王晨晨', '马天宇', '张茯苓', '柳灵儿']
刘晓庆-王晨晨-马天宇-张茯苓-柳灵儿
刘晓庆|王晨晨|马天宇|张茯苓|柳灵儿
#
10.判断以什么开头
data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
print(data.startswith('大'))
#输出结果是False
11.统计长度len()
data = "刘晓庆|王晨|柳灵儿"
print(len(data))
#10
12.编码
strs = '中国'
print(str)
13.查看当前字符串在ascii码表里的位置
print(ord('a')) #a在ascii表里面第97位
print(chr(97)) #在ascii表里面第97位是a
for i in range(100000): #遍历前100000位
print(chr(i))
# gbk中文编码
# utf8万国码
strs = '中国'
print(strs.encode('utf8').decode('utf8')) #utf8转的,转过去还是用utf8
print(strs.encode('gbk').decode('gbk')) #gbk转的,转过去还是用gbk
print(strs.encode('gbk'))
print(strs.encode('utf8'))
特殊
str1 = b'\xd6\xd0\xb9'.decode('gbk','ignore') #破坏一下再转,报错,可以写ignore忽略掉,删除残的就可以转
print(str1)
14.字符串转义
print('hello\nwor\'ld')
print(r'hello\nworld')
#结果:
hello
wor'ld
hello\nworld
#
(1.)处理字符串当中的引号两种方法
①使用不同的引号包围字符串
②对字符串内容的引号进行转义,使用\即可
s5 = "i'm a good boy"
s6 = 'i\'m a good boy'
print(s5)
print(s6)
15.字符串格式化
想让输入到里面的值可以变化,比如可以随便输入一个人的名字,查询成绩什么的,就可以随便输入.
(1)format格式化
1.
username = input('请输入你的名字')
score = float(input('请输入你的成绩'))
print('你好,{0},你的成绩是{1:.2f}'.format(username,float(score)))
结果:
请输入你的名字李白
请输入你的成绩95.89
你好,李白,你的成绩是95.89
2.
name = '李崇昂'
print("我的名字是:{}".format(name))
print('我的年龄是:{age}'.format(age = 18))
#结果:
我的名字是:李崇昂
我的年龄是:18
#
(2)%号格式化,使用%进行占位,%连接传参
%s 格式化字符串
%d 格式化整数
%f 格式化浮点数,可以指定小数点后的精度
1.
username = input('请输入你的名字')
score = float(input('请输入你的成绩'))
print('你好,%s,你的成绩是%.2f'%(username,float(score)))
结果:
请输入你的名字柳宗元
请输入你的成绩97.546
你好,柳宗元,你的成绩是97.55
2.
name = '柳宗元'
age = 18
print('我的名字是%s,我今年%d岁了'%(name,age))
#结果:我的名字是柳宗元,我今年18岁了
(3)f-string 格式化,直接在花括号中传值
1.
username = input('请输入名字')
score = float(input('请输入你的成绩'))
print(type(score))
print(f'你好,{username},你的成绩是{score:.2f}')
结果:
请输入名字梦游
请输入你的成绩102.67
<class 'float'>
你好,梦游,你的成绩是102.67
2.
name = '李白'
print(f'你的名字是{name}')
#结果:你的名字是李白
也可以使用字典类型来格式化
3.
#使用字典类型来格式化
d = {'age':18,'name':18}
print(f'年龄{d["age"]}:名字{d["name"]}')
结果:年龄18:名字18
例题2
输出对应的最大值
答案
max = 0 #假设有个最大值
max_name = '' #等于一个空的字符串
strs = "柳宗元-1|杜甫-5|李白-3|陆游-7|王维-6"
for i in strs.split('|'):
d = i.split('-')
name = d[0] #根据下标注取值['王维', '6'],0是名字,1是数字
num = int(d[1]) #转成整数
if num>max:
max = num
max_name = name
print(max,max_name)
#结果:7 陆游