python基础数据类型之字符串操作

时间:2022-08-13 15:57:26

1.字符串切片
ps:字符串是不可变的对象, 所以任何操作对原字符 是不会有任何影响的

s1 = "python最简洁"
print(s1[0])
print(s1[1])
print(s1[2])
print(s1[3])
print(s1[4])
print(s1[5])
print(s1[6])
print(s1[7])
print(s1[8])
print(s1[9]) # 会报错
print(s1[-1]) # 倒数第一个
print(s1[-2]) # 倒数第二个

语法一: str[start: end]
规则: 从start开始截取. 截取到end位置. 但不包括end

s2 = "python最简洁"
print(s2[0:3]) # 从0获取到3.不包含3. 结果: pyt
print(s2[6:8]) # 结果 "最简""
print(s2[6:9]) #最大是8,但实际顾头不顾尾,想要取到8必须给到9
print(s2[6:10]) # 如果右边已经过了最大值. 相当于获取到最后
print(s2[4:]) # 如果想获取到最后. 那么最后一个值可以不给.
print(s2[-1:-5]) # 从-1获到-5 这样是获取不到任何结果的.从-1向右数,你怎么数,也数不到-5
print(s2[-5:-1]) # 取到数据了. 但是顾头不顾尾. 怎么取最后一个呢?
print(s2[-5:]) # 什么都不写就是最后了
print(s2[:-1]) # 这个是取到倒数第一个
print(s2[:]) # 原样输出

语法二: str[start:end:step]
start: 起始位置
end: 结束位置
step:步
跳着取, 步长
如果是整数, 则从左往右取. 如果是负数. 则从右往左取. 默认是1

print(s2[1:5:2]) #从第一个开始取,取到第5个,每2个取1个,
print(s2[:5:2]) # 从头开始到第5个,每2个取1个
print(s2[4::2]) # 从4开始取到最后,每2个取1个
print(s2[-5::2]) # 从-5取到最后,每2个取1个
print(s2[-1:-5]) # -1:-5什么都没有,因为从左往右获取的
print(s2[-1:-5:-1]) # 步长是-1. 这时就从右往左取值
print(s2[-5::-3]) # 从倒数第5个开始. 到最开始. 每3个取1个, 结果oy

2.字符串大小转换

str.capitalize()# 将字符串的第一个字母变成大写,其他字母变小写
str.lower() # 全部转化成小写
str.upper() # 全部转化成大写

3.字符串去空格处理

str.strip() # 去掉两边空格
str.lstrip() # 去掉左边空格
str.rstrip() # 去掉右边空格

4.字符串替换

str.replace(old,new) # old:原来的str new:需要替换的str

5.字符串切割

str.split(",") # 根据","分割,返回新的列表

格式化输出几种方式:

%s,%f,%d
%s 用于字符串输出

print('%s' % 'hello world')
hello world

%f 用于小数输出

print('%f' % 1.234)
1.234000

%d. 用于整数输出

print('%d' % 4)
4

其他方法

print("我叫{}, 今年{}岁 , 我喜欢{}".format("周杰伦", 28, "周润发")) # 按位置格式化输出

print("我叫{0}, 今年{2}岁 , 我喜欢{1}".format("周杰伦", "周润发", 28)) # 指定位置
print("我叫{name}, 今年{age}岁 , 我喜欢{singer}".format(name="周杰伦", singer="周润发", age=28)) #指定关键字

6.字符串查找

str.startswith("xx") # 判断是否以"xx"开头
str.endswith("xx")) # 判断是否以"xx"结尾
str.count("xx") # 查找str中"xx"出现的次数
str.find("xx") # 查找str中"xx"出现的位置;如果"xx"不在str中,返回-1
str.index("xx") # 求索引位置,找不到会报错

7.字符串条件判断

str.isalnum() #是否字母和数字组成
str.isalpha() #是否是字母组成
str.isdigit() #是否是数字组成

...