IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python初学小知识(五):字符串 -> 正文阅读

[Python知识库]Python初学小知识(五):字符串

Python初学小知识(五):字符串


C语言和Python经常弄混,尤其总是忍不住给Python后面加分号……干脆给自己做个笔记省的忘了。。。(小甲鱼那边的)

九、字符串

  1. 字符串使用范围广、且极其方便:
'''判断是否是回文数'''
>>> x = '123454321'
>>> '是回文数' if x == x[::-1] else '不是回文数'
'是回文数'
  1. 字符串的各种方法:

2.1 大小写转换
在这里插入图片描述

>>> x = 'I love FishC'
>>> x.capitalize()   #首字母大写,其余都小写
'I love fishc'       #返回的并不是源字符串,字符串是不可变的,这只是新生成了一个字符串
>>> x.casefold() 	 #全部小写
'i love fishc'
>>> x.title()  		   	 #所有单词的首字母大写,其余全部小写
'I Love Fishc'
>>> x.swapcase()   #大小写翻转
'i LOVE fISHc'
>>> x.upper()		#全部大写
'I LOVE FISHC'
>>> x.lower()			#全部小写
'i love fishc'   
'''casefold可以处理其他语言的小写,lower只能处理英文字母'''

2.2 左中右对齐
在这里插入图片描述
首先都要指定宽度,如果width比源字符串总长度小,则按源字符串输出:

>>> x = '你好,世界!'
>>> x.center(10)		#居中
'  你好,世界!  '
>>> x.ljust(10)	    	#左对齐
'你好,世界!    '
>>> x.rjust(10)	    	#右对齐
'    你好,世界!'
>>> x.zfill(10)	    	#左填充0,用于指定长度时
'0000你好,世界!'

还可以对空白做补充:

>>> x = '你好,世界!'
>>> x.center(10, '0')
'00你好,世界!00'
>>> x.ljust(10, '我')
'你好,世界!我我我我'

2.3 查找
在这里插入图片描述

>>> x = '上海自来水来自海上'
'''查找次数'''
>>> x.count('海')   
2
>>> x.count('海', 0, 5)   #查找片段中的次数
1

'''查找索引'''
>>> x.find('海')  #从左往右找
1
>>> x.rfind('海')  #从右往左找
7
>>> x.rfind('海',0,5)  #从下标5的位置从右往左找
1
>>> x.rfind('海',4,9)
7

这个查找索引和index()的区别在于,当查找的内容不存在于字符串时,find()和rfind()返回-1,而index()报错
2.4 替换
在这里插入图片描述
把Tab全部替换成空格:

>>> code = '''
	    My name is Buranny.  
    Your name is Aamy.'''    #上一行用Tab缩进,下一行用4个空格缩进
>>> new_code = code.expandtabs(4)  #把Tab全部用4个空格表示
>>> new_code
'\n    My name is Buranny.\n    Your name is Aamy.'
>>> print(new_code)

    My name is Buranny.
    Your name is Aamy.

新字符串替换旧字符串,count表示替换次数,一般默认为-1,表示全部替换:

>>> '我爱我家'.replace('我', '你', -1)  #此时也可以省略-1
'你爱你家'
>>> '我爱我家'.replace('我', '你', 1)
'你爱我家'

首先给出转换规则,再用translate进行转换:

>>> table = str.maketrans('ABCDEFG', '1234567')
>>> 'My Boy Lika Apple'.translate(table)
'My 2oy Lika 1pple'
>>> 'My Boy Lika Apple'.translate(str.maketrans('ABCDEFG', '1234567'))  #结果相同
'My 2oy Lika 1pple'
>>> 'My Boy Lika Apple'.translate(str.maketrans('ABCDEFG', '1234567', 'Myle'))  
' 2o Lika 1pp'  #将指定的字符串中存在的元素忽略,所有的M、y、l、e全忽略了

2.5 判断
在这里插入图片描述
判断位置:

>>> x = '我爱python'
>>> x.startswith('爱')  #判断字符串是否在起始位置
False
>>> x.startswith('我')
True
>>> x.startswith('爱', 1, 5)
True

>>> x.endswith('on')  #判断字符串是否在末尾位置
True
>>> x.endswith('py',0 ,3)
False
>>> x.endswith('py',0 ,4)
True

>>> if x.startswith(('我', '你', '他')):  #还可以利用元组判断
	print('yes')
	
yes

判断大小写:

>>> x = 'I love Python'
>>> x.istitle()  #是否只有首字母大写,其余字母小写
False
>>> x = 'I Love Python'
>>> x.istitle()
True

>>> x = 'I AM SINGER'
>>> x.isupper()  #是否全是大写
True
>>> x.upper().isupper()  #先upper()全部转换成大写,然后isupper()是否全部大写
True
>>> x = 'I AM SINGER'
>>> x.islower()  #是否全是小写
False

判断类型:

>>> x = 'I love Python'
>>> x.isalpha()  #是否全是字母
False  #有空格
>>> '	 \n'.isspace()  #单引号里面是缩进、空格、转义字符,判断是否是空白字符串
True
>>> 'I love Python'.isprintable()  #是否可打印
True
>>> 'I love Python\n'.isprintable()  #转义字符不可打印
False

判断数字类型:
在这里插入图片描述
具体见isdigit()、isnumeric()和isdecimal()的区别。在isalpha()、isdigit()、isnumeric()和isdecimal()中,任意一个返回True,isalnum()都返回True。

判断是否是一个合法的python标识符(变量名必须是一个合法的python标识符):

>>> 'my god'.isidentifier()
False
>>> 'my_god'.isidentifier()
True
>>> 'my10'.isidentifier()
True
>>> '10my'.isidentifier()  #标识符不能以数字开头
False

判断是否为python的保留标识符(if、for之类的):

>>> import keyword
>>> keyword.iskeyword('if')
True
>>> keyword.iskeyword('py')
False

2.6 截取
在这里插入图片描述

>>> '    去除左侧的空白'.lstrip()
'去除左侧的空白'
>>> '去除右侧的空白    '.rstrip()
'去除右侧的空白'
>>> '    去除两侧的空白    '.strip()
'去除两侧的空白'

其中,chars=None表示什么都没有,就是去除空白的意思,可以在这里传入要去除的字符串:

>>> 'www.ilovefishc.com'.lstrip('wcom.')
'ilovefishc.com'
>>> 'www.ilovefishc.com'.rstrip('wcom.')
'www.ilovefish'
>>> 'www.ilovefishc.com'.strip('wcom.')
'ilovefish'

'''
在这里,以第一个举例,是对'www.ilovefishc.com'这个字符串从左到右按照字符进行查找,直到不在被删除字符串为止'wcom.':
首先,三个'w'都在'wcom.'中,删除;
接着,'.'在'wcom.'中,删除;
然后,'i'不在'wcom.'中,停止查找。
并不是整体删除'wcom.'的意思。
'''

整体删除字符串:

>>> 'www.ilovefishc.com'.removeprefix('www.')  #删除指定前缀
'ilovefishc.com'
>>> 'www.ilovefishc.com'.removesuffix('.com')  #删除指定后缀
'www.ilovefishc'

2.7 拆分和拼接
拆分:

>>> 'www.ilovefishc.com'.partition('.')  #从左到右找分隔符,以'.'为标志拆分,仅拆分一次
('www', '.', 'ilovefishc.com')
>>> 'www.ilovefishc.com'.rpartition('.')  #从右到左找分隔符,以'.'为标志拆分,仅拆分一次
('www.ilovefishc', '.', 'com')

>>> 'www.ilovefishc.com'.split('.')  #从左到右找分隔符,以'.'为标志拆分,全部拆分
['www', 'ilovefishc', 'com']
>>> 'www.ilovefishc.com'.split('.',1)
['www', 'ilovefishc.com']
>>> 'www.ilovefishc.com'.rsplit('.',1)  #从右到左找分隔符,以'.'为标志拆分,仅拆分一次
['www.ilovefishc', 'com']

>>> '你\n我\r他\n\r她'.splitlines()  #以换行符进行拆分,默认为False,表示结果不包含换行符
['你', '我', '他', '', '她']
>>> '你\n我\r他\n\r她'.splitlines(True)  #改为False,表示结果包含换行符
['你\n', '我\r', '他\n', '\r', '她']

拼接:

>>> '.'.join(['www', 'ilovefishc', 'com'])  #这里是把要拼接的子字符串以列表的方式包裹起来,用元组也可以
'www.ilovefishc.com'

#用加号也可以拼接,但是join更快:
>>> x = 'fishc'
>>> x += x
>>> x
'fishcfishc'
>>> ''.join(('fishc', 'fishc'))
'fishcfishc'
  1. format()语法格式化字符串:
>>> '1+2={}, 2^2={}, 3^3={}'.format(1+2, 2*2, 3*3*3)
'1+2=3, 2^2=4, 3^3=27'

#可以在花括号中写上数字表示是哪一个内容(位置索引):
>>> '{}看到{}就很激动'.format('我', '你')
'我看到你就很激动'
>>> '{1}看到{0}就很激动'.format('我', '你')  
'你看到我就很激动'
#参数中的字符串被当作元组的元素来对待,所以下标是从0开始,花括号中是索引值

#同一个索引值可以被引用多次:
>>> '{0}{0}{1}{1}'.format('是', '非')
'是是非非'

#也可以使用关键字参数:
>>> '我叫{name},我爱{fav}。'.format(fav='Python', name='三耳01')  #这时候元组中的顺序就不重要了
'我叫三耳01,我爱Python。'

#位置索引和关键字索引可以结合起来:
>>> '我叫{name},我爱{0},{0}很好玩。'.format('Python', name='三耳01')
'我叫三耳01,我爱Python,Python很好玩。'

#输入花括号
>>> '{}, {}, {}'.format(1, '{}', 2)  #把花括号看成字符串
'1, {}, 2'
>>> '{}, {{}}, {}'.format(1, 2)  #用花括号注释花括号,元组中就只是剩下的了
'1, {}, 2'

更多用法:
[[fill]align][sign][#][0][width][grouping_option][.precision][type]
在这里插入图片描述
3.1 [align]

>>> '{:^10}'.format('apple')  #宽度为10,^表示居中
'  apple   '
>>> '{1:<6}{0:>6}'.format('boy', 'cat')  #宽度为6,1表示索引为1,即'cat',<表示居左,>表示居右
'cat      boy'  

#位置索引改成关键字索引也一样
>>> '{c:<6}{b:>6}'.format(b='boy', c='cat')
'cat      boy'

#感知正负号填充0(只对数字有效):
>>> '{:09}'.format(55)  #宽度为9
'000000055'
>>> '{:09}'.format(-55)
'-00000055'

#可以指定填充的字符(此时不是感知正负号填充0,就需要表示位置了):
>>> '{:%^9}'.format(55)
'%%%55%%%%'
>>> '{:%>9}'.format(-55)
'%%%%%%-55'  #这里没有感知正负号,而如果想感知正负号,则换成等于号:
>>> '{:%=9}'.format(-55)
'-%%%%%%55'  #同理,前面填充0的时候也可以是:
>>> '{:0=9}'.format(-55)
'-00000055'

3.2 [sign]
在这里插入图片描述

>>> '{:+} {:+}'.format(1, -1)
'+1 -1'
>>> '{:-} {:-}'.format(1, -1)
'1 -1'
>>> '{: } {: }'.format(1, -1)
' 1 -1'

设置千分位的分隔符:

>>> '{:,}'.format(1234567)
'1,234,567'
>>> '{:_}'.format(1234567)
'1_234_567'

精度(不允许用在整数上):

>>> '{:.2f}'.format(3.1415)  #限定小数点后多少位
'3.14'
>>> '{:.2g}'.format(3.1415)  #限定小数点前后多少位
'3.1'
>>> '{:.6}'.format('I love Python')  #限定非数字类型最大字段的大小
'I love'

类型type:
整数:
在这里插入图片描述

>>> '{:b}'.format(80)
'1010000'
>>> '{:c}'.format(80)
'P'
>>> '{:d}'.format(80)
'80'
>>> '{:o}'.format(80)
'120'
>>> '{:x}'.format(80)
'50'
>>> '{:#b}'.format(80)  #加上一个#号,会在结果中加入前缀
'0b1010000'  #加上了一个0b表示是二进制

小数:
在这里插入图片描述

>>> '{:e}'.format(30)
'3.000000e+01'  #这里的科学计数法的小数是6位
>>> '{:f}'.format(3.1415)
'3.141500'  #小数6位
>>> '{:g}'.format(123456789)  #g通用,大数
'1.23457e+08'
>>> '{:g}'.format(1234.56789)  #g通用,小数
'1234.57'
>>> '{:%}'.format(0.98)
'98.000000%'
>>> '{:.2%}'.format(0.98)  #更改精度
'98.00%'
>>> '{:.{prec}%}'.format(3.1415, prec=2)  #用关键字更改精度
'314.15%'
>>> '{:{fill}{align}{width}.{prec}{ty}}'.format(3.1415, fill='+', align='^', width=10, prec=3, ty='g')
'+++3.14+++'
>>> '{:.4g}'.format(3.1415)  #四舍五入
'3.142'
>>> '{:.3%}'.format(3.1415)  #%和g表示的精度不一样,g是限定小数点前后多少位,前面已经说了
'314.150%'

f/F-字符串:可以看作是format()的一个语法糖,进一步简化操作,并且带来了功能上的提升(python3.6的产物,format()兼容性更高,所以更广泛):
在这里插入图片描述

>>> '1+2={}, 2^2={}, 3^3={}'.format(1+2, 2*2, 3*3*3)
'1+2=3, 2^2=4, 3^3=27'  #就可以变成:
>>> f'1+2={1+2}, 2^2={2*2}, 3^3={3*3*3}'  #不需要format()了
'1+2=3, 2^2=4, 3^3=27'  

#格式化字符串同理
>>> '{:010}'.format(-55)
'-000000055'
>>> f'{-55:010}'
'-000000055'

>>> '{:,}'.format(1234567)
'1,234,567'
>>> F'{1234567:,}'
'1,234,567'
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-24 14:53:43  更:2021-10-24 14:53:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:41:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码