py语法基础010_字符串操作

本文详细介绍了Python字符串的各种操作,包括字符串的类型、查找方法、替换方法、拆分方法、修饰方法、变形方法、判断方法、填充格式化、字符串驻留机制等。还通过实例演示了如何使用这些方法进行字符串的查找、替换、拆分、格式化等操作。
摘要由CSDN通过智能技术生成
# encoding=utf-8
"""
1、字符串类型
(1)由引号包含的一些字符,实质是字符序列(由字符组成的序列)
(2)字符串是有序的、不可变的,无法对原字符串做任何修改
(3)编码
    A、默认16位Unicode编码,ASCII码是Unicode编码的子集
    B、使用内置函数ord()可以把字符转换成对应的Unicode码
    C、使用内置函数chr()可以把十进制数字转换成对应的字符
(4)转义:使用"\",表示特殊效果
    \(续行符)、\\(反斜杠)、'(单引号)、"(双引号)、b(退格)、n(换行)、t(制表符)、r(回车)
2、查找方法
(1)字符串.find(char,start,end):返回从左开始第一个指定字符的索引值,没找到返回-1
(2)字符串.rfind(char,start,end):返回从右开始第一个指定字符的索引值,没找到返回-1
(3)字符串.index(char,start,end):返回从左开始第一个指定字符的索引值, 没有找到报错ValueError
(4)字符串.rindex(char,start,end):返回从右开始第一个指定字符的索引值, 没有找到报错ValueError
(5)字符串.count(char):计数,返回指定字符在字符串中的个数
(6)字符串.encode(encoding):以指定的编码格式编码字符串
    A、str用于展示
    B、byte用于传输
    C、encode:编码,将字符串转换成字节码str-->byte
    D、decode:解码,将字节码转换成字符串byte-->str
    E、utf-8:英文占1个字节,中文占3个字节
    F、gbk:英文占1个字节,中文占2个字节
    G、转义字符:改变原有字符的意义,\特定字符
    H、原生字符:任意字符串之前添加字母r或者R
(7)len(字符串):返回字符串的长度
3、替换方法:创建了新的字符串对象,并指向了变量
(1)字符串.replace(旧,新,次数):按照指定次数替换字符串中的旧数据替换成新数据
(2)字符串.replace(旧,新):默认全部替换字符串中的旧数据替换成新数据
(3)字符串.maketrans(原字符,替换字符-个数相同):制作一个替换关系(字典)
(4)字符串.translate(trans):使用制作的替换关系替换字符串数据
4、拆分方法
(1)字符串.partition(子串):从左到右将字符串按照子串前后固定切割成三部分,返回元组类型
(2)字符串.rpartition(子串):从右到左将字符串按照子串前后固定切割成三部分,返回元组类型
(3)字符串.splitlines():将字符串按照换行符分隔,返回一个列表
(4)字符串.split(符号):按照给定符号切割字符串,默认空格、空行、制表符分隔,返回一个列表;可设置maxsplit指定切割次数
(5)字符串.rsplit(符号):通过指定分隔符对字符串进行拆分,默认空格、空行、制表符分隔,返回一个列表;可设置maxsplit指定切割次数
(6)符号.join(可迭代数据):将可迭代数据按照符号拼接成一个字符串
(7)拼接字符串要点
    A、使用拼接符+,会生成新的字符串对象,效率低,不推荐使用
    B、使用join(),只会创建一个对象,效率高,推荐使用
5、修饰方法
(1)字符串.center(num):将字符串按照给定的数目居中展示,默认按照空格填充,可设置填充字符
(2)字符串.ljust(num):将字符串按照给定的数目左对齐展示,默认按照空格填充,可设置填充字符
(3)字符串.rjust(num):将字符串按照给定的数目右对齐展示,默认按照空格填充,可设置填充字符
(4)字符串.zfill(num):将字符串填充到指定的字符长度,不足用0从左侧开始填充
(5)字符串.strip(char):从字符串两端去除所给字符各个元素的内容,注意必须从两头开始去除,字符空时默认删除两边空格
(6)字符串.rstrip(char):删除右边数据,从字符串右边去除所给字符各个元素的内容
(7)字符串.lstrip(char):删除左边元素,从字符串左边去除所给字符各个元素的内容
6、变形方法
(1)字符串.upper():将字符串中的字母大写
(2)字符串.lower():将字符串中的字母小写
(3)字符串.swapcase():将字符串中的字母大小写互换
(4)字符串.title():将字符串中的单词首字母大写,其他字母小写
(5)字符串.capitalize():将字符串的首字母大写,其他字母小写
(6)字符串.expandtabs:将特殊字符串(\t)转换成空格,默认8个空格,可以设置转化的空格数目
(7)字符串.casefold():所有字母的小写,只转换ASCII字母
7、判断方法
(1)字符串.isalnum():判断字符串是否完全由字母或数字组成
(2)字符串.isalpha():判断字符串是否完全由字母组成
(3)字符串.isdigit():判断字符串是否完全由数字组成
(4)字符串.isupper():判断字符串当中的字母是否完全是大写
(5)字符串.islower():判断字符串当中的字母是否完全是小写
(6)字符串.istitle():判断字符串是否满足title 格式
(7)字符串.isspace():判断字符串是否完全由空格组成
(8)字符串.startswith(char):判断字符串的开头字符,也可以截取判断
(9)字符串.endswith(char):判断字符串的结尾字符,也可以截取判断
(10)字符串.isascii():判断字符串是否为ascii码
(11)字符串.isdecimal():判断字符是否只包含十进制字符串-二进制0b、八进制0o、十六进制0x
(12)字符串.isidentifier():判断字符串变量名是否合法
(13)字符串.isnumeric():判断字符串是否只由数字组成
(14)字符串.isprintable():判断是否为可打印字符串
8、%占位
(1)d-数值:给int类型的数据占位
(2)f-浮点数:给float类型的数据占位
    A、保留小数点后一位:%.1f或%.f
    B、保留小数点后两位:%.2f
(3)s-字符串:给str类型的数据占位
(4)当只有一个填充数据时,数据可以不使用括号包含
    {}.f(无参-不指定位置)
    {1}:{0}.f('无参-指定位置',1)
    {n}.f(**字典)
    {n}.f(n=数据)
    {0[0]}:{0[1]}.format(列表)
    {:.2f}.format(小数)
    {:.nf}—小数n位
    {:+.nf}—符号小数n位
    {:.n%}—百分制小数n位
    {:0>5d}—数字补零(右对齐)
    {:a<5d}—数字补a(左对齐)
    {:,}—逗号分隔数字
    {:.2e}—指数小数2位
    {:^10d}—中间对齐
9、format赋值
(1)位置赋值:通过{}来代替%
    A、{}{}.format(数据1,数据2):按照位置先后将数据1、数据2填入到对应位置的{}占位中
    B、占位的数目和和给定的数据数目必须一致
(2)编号赋值
    A、{1}{0}.format(数据1,数据2):按照标号将数据1、数据2填入到对应位置的{}占位中
    B、注意编号索引不可比数据个数大,编号和不编号不和混用
(3)关键字赋值
    A、{参数名}{参数名}.format(参数名=参数值):按照关键字名将对应数据填入到对应位置的{}占位中
    B、给定的参数个数可以不使用,但是不能没有
10、f-string格式化
(1)可以直接通过f{}的方式给位置填充数据
(2)可以直接填充数据,也可以填充变量
11、填充格式化
(1)格式:[填充字符][对齐方式][宽度].[保留位数]
(2)对齐方式:<表示向左对齐,^表示居中对齐,>表示向右对齐
(3)按照填充字符、对齐方式为数据拓展为指定宽度的格式数据,保留指定的小数位数--保留方式使用四舍五入规则
(4)str{}.format(char)):字符串格式化
(5)字符串.format_map(dct):字符串格式化,只操作字典
12、字符串驻留机制
(1)字符串创建后,会直接保存在驻留池中,再次创建相同字符串时,会直接引用驻留池中的字符
(2)优点:仅保存一份相同且不可变的字符串
(3)字符串的比较和同一性
    A、==:判断两个字符串是否相同(值相等)
    B、is:判断两个字符串是否同一对象(值相等,地址相同)
    C、in:判断一字符串是否是存在于另一字符串中
13、可变字符串
(1)字符串属于不可变对象,不支持原地修改
(2)字符串的修改,实质是创建新的字符串对象
(3)字符串修改,可以使用io.StringIO对象或array模块
    A、data = io.StringIO(字符串):获取到字符串的io对象
    B、data.getvalue():获取到io对象的字符串值
    C、data.seek(n):设置修改字符串的索引位置
    D、data.write(char):按照设置的位置,使用字符替换字符串的数据
"""
import os
import time
import string
import hashlib

# 使用引号包含的数据就是字符串
sr1 = "   字符:~!@#$%^&*()-+字符ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789   字符串   大家庭中的一员   @@@@@"
sr2 = sr1.encode('utf-8')
sr3 = sr1.encode('gbk')
sr4 = sr2.decode(encoding="utf8")
sr5 = sr3.decode(encoding="gbk")

# 查找方法
# 字符串.find(子串)从左向右查询子串在字符串第一次出现的正向索引,不在字符串中返回-1
print("字符串.find(子串):从左向右查询子串,在字符串第一次出现的正向索引:", sr1.find("我"))
print("字符串.find(子串):从左向右查询子串,不在字符串中返回-1:", sr1.find("我们"))
# 字符串.rfind(子串)从右向左查询子串第一次出现的正向索引,不在字符串中返回-1
print("字符串.rfind(子串):从右向左查询子串,在字符串第一次出现的正向索引:", sr1.rfind("家庭"))
print("字符串.rfind(子串):从右向左查询子串,不在字符串中返回-1:", sr1.rfind("家中"))
# 字符串.index(子串)从左到右查询子串第一次出现的正向索引,不在字符串中则报错
print("字符串.index(子串):从左到右查询子串,在字符串第一次出现的正向索引:", sr1.index("字符"))
print("字符串.index(子串):从左到右查询子串,不在字符串中则报错")
# print(sr1.index("字符啊"))
# 字符串.rindex(子串)从右到左查询子串第一次出现的正向索引,不在字符串中则报错
print("字符串.rindex(子串):从右到左查询子串,在字符串第一次出现的正向索引:", sr1.rindex("字符"))
print("字符串.rindex(子串):从右到左查询子串,不在字符串中则报错")
# print(sr1.rindex("字符啊"))
# 字符串.count(子串)查询指定子串在字符串中出现的次数
print("字符串.count(子串):查询指定子串在字符串中出现的次数:", sr1.count("字符"))

# 替换
# 字符串.replace(旧数据,新数据,次数):将字符串中的旧数据替换成新数据,指定替换的次数,次数超过包含的数量时会全部替换
# 替换字符,指定替换次数
print("字符串.replace(旧,新,次数):按照指定次数替换字符串中的旧数据替换成新数据:", sr1.replace("   ", " ", 2))
# 替换字符,默认全部替换
print("字符串.replace(旧,新,次数):默认全部替换字符串中的旧数据替
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值