字符串是容器行数据,里面的元素都是字符【长度为1的字符串】
不可变的有序序列
# 获取元素个数
s = 'hello everyone'
# 获取元素个数
print(len(s)) # 14
# 可以通过下标 获取字符
print(s[0]) # h
print(s[-1]) # e
print(s[:3]) # hel
print(s[-3:]) # one
1.字符串数据.find(子串)
查找子串第一次出现的位置
2.字符串数据.rfind(子串)
查找子串最后一次出现的位置
3.字符串数据.count(子串)
统计字符串数据有几个
s = 'hello everyone'
pos = s.find('e')
print(pos) # 1
pos = s.rfind('e')
print(pos) # 13
count = s.count('e')
print(count) # 4
将字符串中的相关符合进行转化【因为字符串不可变,产生的数据是影响不了原数据的】
字符串数据.upper() 将字母变成大写
字符串数据.lower() 将字母变成小写
字符串数据.swapcase() 将字母小写变成大写,大写变成小写
字符串数据.title() 将每个单词首字母变成大写【没连接在一起的就是一个单词】
字符串数据.capitalize() 将首字母大写,其他小写
s = 'hello everyone'
# 将字母变成大写
print(s.upper()) # HELLO EVERYONE
# 将字母变成小写
new_s1 = s.lower()
print(new_s1) # hello everyone
# 将每个单词首字母变成大写
new_s2 = s.title()
print(new_s2) # Hello Everyone
# 将字母小写变成大写,大写变成小写
new_s3 = new_s2.swapcase()
print(new_s3) # hELLO eVERYONE
# 将首字母大写,其他小写
new_s4 = new_s3.capitalize()
print(new_s4) # Hello everyone
1.是否以指定内容开头
字符串数据.startswich(指定内容)
2.是否以指定内容结尾
字符串数据.endswich(指定内容)
3.判断是否是纯数字
字符串数据.isdigit()
4.判断内容是否是纯字母
字符串数据.isalpha()
5.判断内容是否是字母或数字
字符串数据.isalnum()
6. 判断字符串中的字母是否为大写
字符串数据.isupper()
7. 判断字符串中的字母是否为小写
字符串数据.islower()
s = 'Hello Everyone'
# 判断是否以指定内容开头
print(s.startswith('H')) # True
# 判断是否以指定内容结尾
print(s.endswith('one')) # True
# 判断内容是否是字母或数字
print(s.isalnum()) # False
# 判断字符串中的字母是否为大写
print(s.isalpha()) # False
# 判断字符串中的字母是否为大写
print(s[0].isupper()) # True
# 判断字符串中的字母是否为小写
print(s[-3:].islower()) # True
# 判断是否是纯数字
print('123'.isdigit()) # True
# 判断是否是纯数字
print('abc12'.isdigit()) # False
data = "hello my age is 18 ,my birthday is September 5th"
# 遍历字符串,提取其中的数字符号
for i in data:
# if i in '0123456789':
if i.isdigit():
print(i, end=' ')
print()
print(data.title())
print(data.count('a'))
print(data.find('is'))
print(data[13::])
切割:
字符串数据.split(切割符)
将指定切割符为切割点,把字符串分成N份,结果是一个列表,存储多个子串
拼接:
‘拼接符’.join(容器行数据)
使用拼接符将容器中的元素拼接在一个
注意:容器中的元素必须是字符串类型,底层实现的时候,使用的是+号运算
+在字符串中完成字符串拼接,只能拼接字符串类型的
print(data)
print(data.split(' ')) # ['hello', 'my', 'age', 'is', '18,', 'my', 'birthday', 'is', 'September', '5th.']
print(data.split('e')) # ['h', 'llo my ag', ' is 18 ,my birthday is S', 'pt', 'mb', 'r 5th']
nums = [18, 34, 56, 71, 29]
# 使用+号将其拼接在一起
# print('+'.join(nums)) # TypeError: sequence item 0: expected str instance, int found(人家期待的是字符串 但是获取的却是整型)
# 拼接之前转化成字符串
# str(nums) # 将传进的数据转化为字符串 ====> '[18, 34, 56, 71, 29]'
str_nums = [str(ele) for ele in nums] # ['18', '34', '56', '71', '29']
print('+'.join(str_nums)) # 18+34+56+71+29
在指定宽度中居中显示 字符串.center(宽度,占位符)
在指定宽度中居左显示 字符串.ljust(宽度,占位符)
在指定宽度中居右显示 字符串.rjust(宽度,占位符)
s='hello'
print(s.center(10,'*')) # **hello***
print(s.ljust(10,'&')) # hello&&&&&
print(s.rjust(10,'$')) # $$$$$hello
目的: 将字符串类型的数据与字符串类型的数据进行拼接
+可以让字符串进行拼接,但只能是字符串类型的数据(只能字符串与字符串进行拼接)
print('年龄'+str(17))
先生成文本 在未知的位置使用占位进行占位,再对字符串进行%, 给占位的符号赋值
占位符:
%s --- 可以填充任意类型的数据
%d --- 填充的是整型数据
可以单独再进行格式化操作
%0nd === n代表的是数字显式的宽度 不足n位 左边补充0
%05d ====> 10 ====> 显式的时候 为 00010
%f --- 填充的浮点型数据
可以再单独格式化
%.nf === n代表的是保留小数的位数
%.3f ====> 3.1415926 ===>显式为 3.142
year = 2020
month = 4
if month in (4, 6, 9, 11):
day = 30
elif month in (1, 3, 5, 7, 8, 10, 12):
day = 31
else:
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
day = 29
else:
day = 28
# 有几个占位符 就赋予几个值 值和占位符之间是一一对应的
content = '%s年%s月有%s天' % (year, month, day)
print(content)
# 学号 显式的时候按照6位来显式
sid = 1
# 姓名
name = '张三'
# 年龄
age = 17
# 成绩 显式的时候保留一位小数
score = 89.65
info = '学号为%06d的%s,年龄是%s, 考试成绩为%.1f' % (sid, name, age, score)
print(info) # 学号为000001的张三,年龄是17, 考试成绩为89.7
先生成字符串文本数据,位置数据的地方使用{}进行占位,调用字符串的format操作,给占位符进行赋值
有几个占位符就传递几个值
如果对数据有特殊的格式,在{}中操作
{:0nd} 按照n位填充
{:.nf} 保留n位小数
info1 = '学号为{:06d}的{}, 年龄是{}, 考试成绩为{:.1f}'.format(sid, name, age, score)
print(info1) # 学号为000001的张三,年龄是17, 考试成绩为89.7
# f修饰完字符串 可以直接在{}的位置填充对应的数据值
# 要修饰数据 {数据:0nd} {数据:.nf}
info2 = f'学号为{sid:06d}的{name}, 年龄是{age}, 考试成绩是{score:.1f}'
print(info2) # 学号为000001的张三,年龄是17, 考试成绩为89.7