python字符串

字符串是容器型数据,里面的元素都是字符[长度为1的字符串]

'a' 'b' ' ' '0'

不可变的有序序列

s = 'hello everyone'
# 获取元素个数
print(len(s))
​
# 可以通过下标 获取字符
print(s[0])
print(s[-1])
​
print(s[:3])
print(s[-3:])
​
# s[0] = 'H'
# TypeError: 'str' object does not support item assignment

获取的操作

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)

转换的操作

将字符串中的相关符号进行转换 【因为字符串不可变 产生的数据是影响不了原本的数据 都是产生的是一个新的数据】

字符串数据.upper() 将字母变大写

字符串数据.lower() 将字母变小写

字符串数据.swapcase() 将大写变小写 将小写变大写

字符串数据.title() 每个单词首字母大写 【单词:没连接在一起的就视作一个新的单词】

字符串数据.capitalize() 首字母大写 其他小写

s = 'hello everyone'
 new_s = s.upper()
 print(s, new_s)
​
 new_s1 = new_s.lower()
 print(new_s1)
​
 new_s2 = new_s.title()
 print(new_s2)  # Hello Everyone
​
 new_s3 = new_s2.swapcase()
 print(new_s3)
​
 new_s4 = new_s3.capitalize()
print(new_s4)

判断的操作

1. 是否以指定内容开头

字符串数据.startswith(指定内容)

2. 是否以指定内容结尾

字符串数据.endswith(指定内容)

3. 判断是否是纯数字

字符串数据.isdigit()

4. 判断字符串的内容是否为纯字母

字符串数据.isalpha()

5. 判断字符串的内容是否为数字或字母

字符串数据.isalnum()

6. 判断字符串中的字母是否为大写

字符串数据.isupper()

7. 判断字符串中的字母是否为小写

字符串数据.islower()

 s = 'Hello Everyone'
 print(s.startswith('H'))
 print(s.endswith('one'))
​
 print(s.isalnum())  # False
 print(s.isalpha())  # False
 print(s[0].isupper())  # True
 print(s[-3:].islower())  # True
​
 print('123'.isdigit())
​
 print('abc12'.isdigit())

案例

#1.遍历字符串 提取其中的数字符号
data='hello my age is 18, my birthday is September 5th.'
digit_s = ''
for i in data:
    if i.isdigit():
        digit_s =digit_s +i
        print(digit_s)
#2.将字符串中首字母大写 其他小写
print(data.capitalize())
#3.统计字符串中a出现的次数
print(data.count('a'))
#4.查找is第一次出现的位置 并从这个位置一直提取到最后
print(data .find('is'))
print(data [data.find('is'):])

字符串的切割与拼接

切割:

字符串数据.split(切割符)

将指定切割符为切割点 把字符串分成N份, 结果是一个列表 存储多个子串

拼接:

'拼接符'.join(容器型数据)

使用拼接符将容器中的元素拼接在一起

注意:容器中的元素必须是字符串类型的 底层实现的时候 使用的是 +号运算

+在字符串中完成的字符串拼接 只能拼接字符串类型的

print(data)
print(data.split(' '))
# ['hello', 'my', 'age', 'is', '18,', 'my', 'birthday', 'is', 'September', '5th.']
​
print(data.split('e'))
​
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, '*'))
print(s.ljust(10, '*'))
print(s.rjust(10, '*'))

将未知的数据格式化拼接在字符串文本中

目的:将非字符串类型的数据与字符串类型的数据进行拼接

# + 可以让字符串进行拼接  但是只能字符串类型的数据
# print('年龄' + 17)
# TypeError: can only concatenate str (not "int") to str
# 只能字符串与字符串进行拼接

方式1 将数据转化为字符串类型

print('年龄' + str(17))

方式2: 使用字符串中 % 运算符 【% 在数字运算是取余】

先生成文本 在未知的位置使用占位进行占位,再对字符串进行%, 给占位的符号赋值

占位符:

%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)

方式3: 字符串数据.format()

先生成字符串文本数据,未知数据的地方使用 {}进行占位 调用字符串的format操作 给占位符进行赋值

有几个占位符 传递就有几个值

如果对数据有特殊的格式 在{}操作

{:0nd} 按照n位填充

{:.nf} 保留n位小数

info1 = '学号为{:06d}的{}, 年龄是{}, 考试成绩为{:.1f}'.format(sid, name, age, score)
print(info1)

方式4: 是方式3的简化 使用f修饰字符串

f修饰完字符串 可以直接在{}的位置填充对应的数据值

要修饰数据 {数据:0nd} {数据:.nf}

info2 = f'学号为{sid:06d}的{name}, 年龄是{age}, 考试成绩是{score:.1f}'
print(info2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值