
python之字符串类型内置方法
3、长度
4、成员运算
5、移除空白
6、切分
1.
2、
3、
4、
5、
7、
8、
1、
2.
3.
3、
4、
5、
6、
发布日期:2021-05-04 19:07:17
浏览次数:16
分类:技术文章
本文共 6670 字,大约阅读时间需要 22 分钟。
python之字符串类型内置方法
文章目录
引入
前面****那一章已经对python基本的数据类型进行了大概的描述,以下我们主要从其内置方法来学习
一.定义方式
- 每一个数据类型都自带一个制造的 “工厂”
- 那么字符串类型的 “工厂” 就是
str
msg = 'abc'# 背后的操作就是msg = str("abc")
二.数据类型转换
str
工厂可以把所有类型转成字符串类型
x = 111y = 2.5z = [111,222,333]v = { "name":"shawn"}print(type(str(x))) #print(type(str(y))) # print(type(str(z))) # print(type(str(v))) #
三.常用操作 + 内置方法
优先掌握的操作(***)
1.按照索引取值(正向取+反向取)
- 只能取值,不能改值(不可变类型)
msg = 'hello world'# 正向取print(msg[0]) # hprint(msg[5]) # 取到的是空格# 反向取print(msg[-1]) # d# 如果改值就会报错# msg[0] = 'H' # 报错
2、切片:索引的拓展应用
- 从一个字符串中拷贝出一个子字符串
msg = 'hello world'# 顾头不顾尾print(msg[0:3]) # helprint(msg[0:5]) # hello# 步长print(msg[0:8:2]) # hlow# 反向步长print(msg[5:0:-1]) # olle# 拷贝字符串print(msg[:12]) # hello worldprint(msg[:len(msg)]) # hello worldprint(msg[0:]) # hello worldprint(msg[:]) # hello world (更简洁)# 将字符串顺序反向res = msg[::-1]print(res) # dlrow olleh
3、长度len
:统计的是字符个数
- 通常配合for循环使用,索引取值
msg = 'hello world'print(len(msg)) # 13
4、成员运算in
和 not in
- 判断一个子字符在步子啊一个大字符串里面,in不in
msg="hello world"# "in"print("he" in msg)print("h" in msg)# "not in"print(not 'egon' in msg)print('egon' not in msg) # 推荐
5、移除空白 strip
- 默认是左右两侧空格, 但可以指定符号
- 也可以填多个符号, 一般用于用户输入
# 字符串左右两边有空白name=" shawn "print(name.strip()) #shawnprint(name) #" shawn "原值并没有改变,产生的是新值# 只去两边,不会去掉中间的,指定的是什么就去什么name="** *eg*on***"print(name.strip("*")) # *eg*on"# 指定多个符号x="*(-)=+abc=-)*/"print(x.strip("*()-=+/")) # ABC# 通常用于去掉用户手抖输入的空格name=input("username>>>: ").strip()pwd=input("password>>>: ").strip()if name == "egon" and pwd == "123": print("ok")else: print('error')
6、切分split
- 把一个有规律的字符串按照某种分隔符进行切分
- 并且是从左往右切, 得到的是一个列表
# 默认切分的分隔符是空格info = 'shawn age 18 sex male'res = info.split()print(res) # ['shawn','age', '18','sex', 'male']# 指定分隔符info = 'shawn:age:18:sex:male'res = info.split(':')print(res) # ['shawn','age', '18','sex', 'male']# 指定分隔次数info = 'shawn age 18 sex male'res = info.split(':', 2) # 1表示从左边开始,只切分两次:print(res) # ['shawn','age', '18:sex:male']
7、循环
- 循环取出子字符
msg="hello"for i in msg: print(i)
需要掌握的操作()
1.strip,lstrip,rstrip
: 不同方向移除指定符号
strip
: 移除字符串左右两侧的符号lstrip
: 移除字符串左侧的符号rstrip
: 移除字符串右侧的符号
msg="***hello***"print(msg.strip("*")) #helloprint(msg.lstrip("*")) #hello***print(msg.rstrip("*")) #***hello
2、lower, upper
: 小写,大写
lower
: 将字母转化为全小写upper
: 将字母转化为全大写
msg="HeLlo"print(msg.lower()) #helloprint(msg.upper()) #HELLOprint(msg) #HeLlo (原值不变)
3、startswith,endswith
: 判断开头结尾
startswith
: 判断是否以给定的字符串开始endswith
: 判断是否以给定的字符串结束
msg="hello word"print(msg.startswith("he")) #Trueprint(msg.startswith("hello")) #Trueprint(msg.endswith("rd")) #True
4、format
的三种玩法 : 字符串格式化
- 字符串格式化的三种方式:
- 以下是
.format
的三种玩法
?直接传变量名res="my name is {name} my age is {age}".format(age=18,name="shawn")print(res) #my name is shawn my age is 18?不放任何值, 让其按位置自动传值res="my name is {} my age is {}".format(18,"shawn")print(res) #my name is 18 my age is shawn?通过索引传值res="my name is {0}{0}{0} my age is {1}{0}".format(18,"shawn")print(res) #my name is 181818 my age is shawn18
.format
的高级玩法- 对齐
# 传入值左对齐, 共占"10"的字符位置, 不足以"*"填充res="my name is {0:*<10} my age is {1}".format(18,"shawn")print(res) #my name is 18******** my age is shawn# 传入值右对齐, 共占"10"的字符位置, 不足以"*"填充res="my name is {0:*>10} my age is {1}".format(18,"shawn")print(res) #my name is ********18 my age is shawn# 传入值居中对齐, 共占"10"的字符位置, 不足以"*"填充res="my name is {0:*^10} my age is {1:=^10}".format(18,"shawn")print(res) #my name is ****18**** my age is ==shawn===
2.进制与精度
# 二进制转换res="{0:b} ".format(18)print(res) #10010# 八进制转换res="{0:o} ".format(18)print(res) #22# 十六进制转换res="{0:x} ".format(18)print(res) #12 # 三位一体以","分隔开res="{0:,} ".format(13333333338)print(res) #13,333,333,338 # 保留小数位(四舍五入)res="{0:.3f} ".format(3.7777)print(res) #3.778
5、split,rsplit
: 从不同方向对字符切分
- split : 把字符串按照指定的字符从左开始切成列表
- rsplit : 把字符串按照指定的字符从右开始切成列表
?从左右两边切的次数不同, 效果就不同info="root:123:0:0"print(info.split(":",2)) #['root', '123', '0:0']print(info.rsplit(":",2)) #['root:123', '0', '0']
6、join : 列表拼接成字符
- 按照指定的分隔符, 将一个列表拼接成一个大字符串
- 这个列表里的元素必须全为字符串类型
ps : 单纯的使用 “+” 拼接字符串效率太低, 因为它需要申请新的内存空间
l=["a","b","c"]?"+" 方法不推荐print(l[0]+":"+l[1]+":"+l[2])?使用":"拼接res=":".join(l)print(res) #root:123:0:0?与"split"相对使用info="root:123:0:0"l=info.split(":")print(l) #['root', '123', '0', '0']print(":".join(l)) #root:123:0:0
7、replace
: 替换
- 三个参数: 第一个是原值, 第二个是新值, 第三个是指定替换的次数, 默认不指定
msg="song is song hai xing"res=msg.replace("song","SONG",2)print(res) #SONG is SONG hai xing
8、isdigit
: 判断字符串是否由纯数字组成
- 通常用于接收用户输入个数时
print('123'.isdigit()) # Trueprint('12.3'.isdigit()) # False?用户输入示例age=input("your age>>").strip()if age.isdigit(): age=int(age)else: print("请输入数字")
需要了解的操作(***)
1、find, rfind, index, rindex
: 查找字符串
find
: 指定子字符在大字符串中的从左侧开始的起始位置的索引rfind**
: 指定子字符在大字符串中的从右侧开始**的起始位置的索引index**
: 指定子字符在大字符串中的从左侧开始**的起始位置的索引rindex
: 指定子字符在大字符串中的从右侧开始的起始位置的索引
ps : find
找不到字符串会返回 “-1”, 而 index 会报错
msg='song hai xing song hhh'?find, rfindprint(msg.find('sb'))print(msg.find('song'))print(msg.find('song',13,20))print(msg.rfind('song'))?index, rindexprint(msg.index('song'))print(msg.rindex('song'))print(msg.index('sb')) #找不到会报错,而find不会
2.count
: 统计字符出现的个数
msg = 'shawnnnn'print(msg.count('n')) # 4
3.center,ljust,rjust,zfill
: 字符对齐
.center
: 居中.ljust
: 左对齐填充.rjust
: 右对齐填充.zfill
: 默认以"0"右填充
# 不放符号的话,默认空格填充print('========song========')print('song'.center(40,'@'))print('song'.ljust(40,'$'))print('song'.rjust(30,'&')) print('song'.zfill(40)) #右对齐以 "0" 填充
3、expandtabs
: 可以指定Tab键的空格数
msg='abc\tdfg' #\t 指的是Tab键print(msg.expandtabs(4)) #指定空格数为4
4、captalize,swapcase,title
: 大小写设置
.captalize
: 首字母为大写,其他都为小写.swapcase
: 大写换小写,小写换大写.title
: 每个单词的首字母都换成大写
print('ytdGFHGgfh'.capitalize()) #Ytdgfhggfhprint('jhkjJKHJKjkhk'.swapcase()) #JHKJjkhjkJKHKprint('song hai xing'.title()) #Song Hai Xing
5、is
数字系列
num1=b'4' #bytesnum2=u'4' #unicode python3中无需加u就是unicodenum3=u'肆' #中文数字num4=u'Ⅳ' #罗马数字
-
.isdigit(): bytes, unicode
类型的阿拉伯数字
print(num1.isdigit()) #Tprint(num2.isdigit()) #Tprint(num3.isdigit()) #Fprint(num4.isdigit()) #F
-
.isdecimal(): unicode
类型的阿拉伯数字
print(num2.isdecimal()) #Tprint(num3.isdecimal()) #Fprint(num4.isdecimal()) #F
-
.isnumberic(): unicode
类型的阿拉伯 \中文 \罗马数字
print(num2.isnumeric()) #Tprint(num3.isnumeric()) #Tprint(num4.isnumeric()) #T
结论:尽管用第一个.isdigit就行
6、is
其他系列
?判断字符是否全由字母组成print('asdfaaAsfd'.isalpha()) #True?判断字符是否由字母 或 数字组成print('asdf'.isalnum()) #True?判断首字母是否大写print('I Am Egon'.istitle()) #True?判断是否是空格print(' '.isspace()) #True?判断是否是一个有效的标识符,数字开头就不合法print('print'.isidentifier()) #Trueprint('123nt'.isidentifier()) #Flase
四.总结
- 只能存一个值
- 有序 (有索引的就是有序)
- 不可变类型—>可 hash 类型
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年03月20日 01时30分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java高性能编程之CAS与ABA及解决方法
2019-03-06
从BIO到Netty的演变
2019-03-06
《算法导论》第二章笔记
2019-03-06
HTML `capture` 属性
2019-03-06
CSS盒子模型
2019-03-06
HTML节点操作
2019-03-06
浏览器页面呈现过程
2019-03-06
HTML5新特性
2019-03-06
async/await剖析
2019-03-06
cmp命令
2019-03-06
一次编辑
2019-03-06
od命令
2019-03-06
简单工厂模式
2019-03-06
代理模式
2019-03-06
Js中Currying的应用
2019-03-06
长按键入
2019-03-06
Vuex和普通全局对象
2019-03-06
上升下降字符串
2019-03-06
JavaScript中的链式调用
2019-03-06
day-04-列表
2019-03-06