首页 / PYTHON / Python字符串基本操作
Python字符串基本操作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python字符串基本操作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6735字,纯文字阅读大概需要10分钟。
内容图文
![Python字符串基本操作](/upload/InfoBanner/zyjiaocheng/598/09376b61d154427e9df5444bff76cb10.jpg)
字符串
-
字符串的表示
- 可以用一对单引号,一对双引号,三对单引号,三对双引号,包裹字符(可以是任何字符)来表示
a='hello' b="good" c="""你好""" d='''好''' e='zhangsan said "I am zhangsan."' f="I'm zhangsan"
- 字符串的转义字符
#\' 直接将'作为单引号 #\" 直接将"作为单引号 #\n 表示换行 #\t 表示一个制表符 #\\ 直接将\作为普通\
- 在Python中,在字符串前面加一个r或者R,直接当做原生字符串
print(r'12\nx')
-
字符串的下标和切片
-
字符串的下标:字符在字符串的位置,可以通过字符串的下标获取指定位置的数据
-
在计算机里,下标都是从0开始,可以是负数,负数就是从右边往左边数
word= 'zhangsan' print(word[4])
-
字符串是不可改变类型的数据:对字符串的操作都不会改变原有字符串的数据
-
字符串的切片:是从字符串里复制一段指定的内容,然后生成新的字符串
-
切片的用法:m[start?:end:?step]包含start不包含end,如果只给start,就到最后,只给end,就从开头开始;step是间隔,默认是1,不能为0,可以是负数负数就是从右往左找;start与end正数就是从左到右数,如果是负数,就是从右往左数,这个时候从-1开始数
m='abcdefghijklmnopqrstuvwxyz' print(m[2:9]) print(m[3:15:2]) print(m[15:3:-1])#从第15位倒着打印到第3位(不包含第三位) print(m[::])#打印m print(m[::-1])#逆序打印m
-
常见的字符串的操作:
- 获取长度,查找位置,计数
m='abcdefghijkstuvwxyzabcdefghijkstuvwxyz' print(len(m))#使用内置类len获取字符串的长度 print(m.find('l',4,9))#在4-9找l找到了就打印最小的下标,找不到就是-1 print(m.index('u',4,30))#在4-30找l找到了就打印最小的下标,找不到就报错 print(m.rfind('l',4,9))#在4-9找l找到了就打印最大的下标,找不到就是-1 print(m.rindex('u',4,27))#在4-30找l找到了就打印最大的下标,找不到就报错 print(m.count('a',12,30))#从m的12位到30位(不包含30),a出现的次数
-
关于判断的运算,注意返回值是bool值
print('hell0'.startswith('he'))#判断字符串是否以某个字符串开始 print('hello'.endswith('lo'))#判断字符串是否以某个字符串结束 print('hello'.isalpha())#判断字符串是否只由字母组成 print('123456'.isdigit())#判断字符串是否只由数字组成 print('12nadk'.isalnum())#判断字符串是否只由字母和数字组成
-
替换repalce:注意不改变原来字符串,但是可以通过重新赋值,使得结果发生改变
word='hell0' m=word.replace('e','a')#将word中的e替换成a print(word) print(m)
-
内容分割:split/rsplit/partition/rpartition
split/rsplit是将一个字符串按照指定的字符串作为分割符,导出一个列表
name='zhangsan-lisi-wangwu-Mike-Nancy-Jerry-Tom-Tony' x=name.split('-')#将-作为分隔符,将字符串分割,导出一个列表 print(x) y=name.split('-',3)#3表示分割的次数 print(y) z=name.rsplit('-',3)#rsplit表示从右边开始分割 print(z)
partition/rpartition是将一个字符串按照指定的字符串(第一次出现的)作为中间部分,分成前中后三部分,导出元组
word='kdafhlkhHgkljHasgklj' print(word.partition('H')) print(word.rpartition('H'))
-
修改大小写
print('hell0 world,\n yes'.capitalize())#让第一个单词首字母大写 print('adjgkagk'.upper())#全部大写 print('IHIHKLJIKOJ'.lower())#全部小写 print('hello world,nancy'.title())#全部单词首字母大写 print('hello1world'.title())
-
加减空格
print('Monday'.ljust(10, '+'))#将字符串按照指定的字符数在右侧补齐,默认用空格补齐(多了就相当于没有操作) print('Monday'.rjust(10, '+'))#将字符串按照指定的字符数在左侧补齐,默认用空格补齐(多了就相当于没有操作) print('apple'.center(12, '-'))#将字符串居中然后在左右两侧按照指定的字符数补齐,默认用空格补齐(多了就相当于没有操作) print(' apple '.rstrip())#删掉右边指定字符,默认空格 print(' apple '.lstrip())#删掉左边指定字符,默认空格 print(' apple '.strip())#删掉两边指定字符,默认空格
-
将一个可迭代对象添加一些东西输出字符串
fruit=['1','2','3','4'] print('-'.join(fruit))#添加- print('*'.join('hello'))#添加*
-
字符的编码
-
计算机只认识0和1,所以所有字符都需要转换成一个数字,然后这个数字在经过二进制转换成0和1,这样计算机就能识别了.
-
ASCII编码表(127个)(8个字节)——>Lanti1编码表(255个),在ASCII码表的基础上启用了最高位——>Unicode编码,绝大部分文字都收录了.使用内置函数chr()和ord()可以查看对应关系.这边得到的数据类型是int型.
print(chr(65))#使用chr()查看编码对应的字符 print(ord('a'))#使用ord()查看字符对应的编码
-
因为汉字占了两个字节,所以不能区分两个字节到底是汉字还是单纯的两个Latin字节,所以采用新的编码规范GBK国标扩,汉字占两个字节,简体中文, BIG5加了繁体中文, utf-8所有语言,使用内置类**encode()与decode()**可以实现字符串与指定编码集结果转换.注意:encode输出的结果类型是bytes型,而decode支持的数据类型也是bytes型
print('你'.encode('gbk'))#使用encode()得到字符串到指定编码集的结果 print('你好'.encode('gbk')) print(b'\xc4\xe3\xba\xc3'.decode('gbk'))#使用decode()得到指定编码集里的编码对应的字符串的结果 # print(.decode('gbk')) print(type(b'\xc4\xe3\xba\xc3'))#这边利用encode()得到的结果的类型是bytes型
-
纯文本乱码的原因,是因为打开的编码方式与之前的编码方式不一致
-
-
成员运算符
in和not in判断一个字符是否在一个指定的字符串里面
word='hello' x=input('请输入一个字符:') if x in word: print('存在') else: print('不存在')
-
字符串的格式化
-
格式化打印字符串:使用**% 占位符来表示格式化一个字符串**
- %s 表示字符串的占位
- %d 表示整数的占位
- %nd 打印时,显示n位,如果不够,在前面用空格补齐
- %0nd 打印时,显示n位,如果不够,在前面用0补齐
- %-nd 打印时,显示n位,如果不够,在后面用空格补齐
- %f 表示浮点数的占位
- %.nf 保留小数点后n位
- %x和%X 表示打印结果16进制输出
- %% 表示%的占位
name='zhangsan' age=23 money=3.14 print('大家好,我是',name,',我今年',age,'了,我今天挣了',money,'元.') print('大家好,我是',name,',我今年',age,'了,我今天挣了',money,'元.',sep='') print('大家好,我是%s,我今年%d了,我今天挣了%f元钱'%(name,age,money))#利用%来占位 print('大家好,我是%s,我今年%3d了,我今天挣了%.2f元钱'%(name,age,money)) a=255 print(a) print('%x'% a)#%x和%X 表示打印结果**16进制**输出 print('大家好,我是%s,我今年%d岁了.'%('%s',23)) print('大家好,我是%%s,我今年%d岁了.'%23)
-
使用{}表示占位
- 如果{}里什么都不写,则默认是一一对应填充
x='大家好,我是{},我今年{}岁了,我来自{}'.format('zhangsan',23,'南京') print(x)
- 如果{数字},则按照数字顺序填充
x='大家好,我是{2},我今年{0}岁了,我来自{1}'.format(23,'南京','zhangsan') print(x)
-
如果{变量},按照变量名填充
x='大家好,我是{name},我今年{age}岁了,我来自{addr}'.format(age=23,addr='南京',name='张三') print(x)
-
混合用,如果{}中既有变量,又有数字,首先变量一定是写在后面
x='大家好,我是{name},我今年{0}岁了,我来自{1}'.format(23,'南京',name='张三') print(x)
-
使用列表和字典填充
-
列表可以直接按照列表的下标直接读取,也可以用拆包
info=['zhangsan',23,'南京',180] x='大家好,我是{},我今年{}岁了,我来自{},我身高{}.'.format(info[0],info[1],info[2],info[3]) print(x)#直接用下标读取,自己能对应 x='大家好,我是{},我今年{}岁了,我来自{},我身高{}.'.format(*info) print(x)#用*对info拆包,注意顺序
-
使用字典:注意不是按照顺序,是按照名字填充,还有就是format后面是**+字典名
d={'name':'wangwu','age':25,'addr':'上海','height':180} x='大家好,我是{name},我今年{age}岁了,我来自{addr},我身高{height}.'.format(**d) print(x)
-
-
-
快捷键
- 在setting里可以找到快捷键Keymap
- 双击shift /ctrl+shift+A会弹出全局搜索功能
- 快速格式化代码:ctrl+alt+L
- 快速复制黏贴选中的代码:ctrl+D
- 移动一行代码:alt/ctrl+shift+上下箭头
- 还原:ctrl+Z
-
内容总结
以上是互联网集市为您收集整理的Python字符串基本操作全部内容,希望文章能够帮你解决Python字符串基本操作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。