python之Character string(实例讲解)
1、python字符串
字符串是Python中最常用的数据类型。我们可以使用引号('或")来创建字符串,l
Python不支持单字符类型,单字符也在Python也是作为一个字符串使用。
>>>var1='hellopython'#定义字符串 >>>print(var1[0])#切片截取,从0开始,不包括截取尾数 h >>>print(var1[0:5]) hello >>>print(var1[-6:]) python >>>var2=var1[0:6]+'world'#截取字符并拼接赋值给新变量 >>>print(var2) helloworld
2、python转义字符
\:在行尾时,为续行符
\\:反斜杠转义,输出'\'
\':单引号转义
\":双引号转义
\b:退格(backspace)
\n:换行
\v:纵向制表符
\t:横向制表符
\r:回车
\f:换页
3、python字符串运算符
(+)拼接,(*)重复,([])索引,([:])切片,(in)成员判断,(notin)非成员判断,(r/R)元素输出字符串
>>>var1='hello'
>>>var2='python'
>>>print(var1+var2)#拼接字符串
hellopython
>>>print(var1*3)#重复输出字符串
hellohellohello
>>>print(var1[0])#索引字符串
h
>>>print(var1[3:])#索引切片
lo
>>>'e'invar1#判断字符串是否在变量中
True
>>>'p'notinvar1#判断字符串是否不在变量中
True
>>>print("he\tllo\n")
hello
>>>print(r"he\tllo\n")#原始输出字符串,也就是原始输出转义字符
he\tllo\n
4、格式化字符串
Python支持格式化字符串的输出。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符%s的字符串中。
在Python中,字符串格式化使用与C中sprintf函数一样的语法。
python字符串格式化符号:
格式化字符及其ASCII码
%s
格式化字符串
%d
格式化整数
%u
格式化无符号整型
%o
格式化无符号八进制数
%x
格式化无符号十六进制数
%X
格式化无符号十六进制数(大写)
%f
格式化浮点数字,可指定小数点后的精度
%e
用科学计数法格式化浮点数
%E
作用同%e,用科学计数法格式化浮点数
%g
%f和%e的简写
%G
%f和%E的简写
%p
用十六进制数格式化变量的地址
格式化操作符辅助指令:
*
定义宽度或者小数点精度
-
用做左对齐
+
在正数前面显示加号(+)
在正数前面显示空格
#
在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0
显示的数字前面填充'0'而不是默认的空格
%
'%%'输出一个单一的'%'
(var)
映射变量(字典参数)
m.n.
m是显示的最小总宽度,n是小数点后的位数(如果可用的话)
>>>print("ascii:%c"%'s')#格式化输出字符
ascii:s
>>>print("ascii:%c"%'1')#格式化输出数字
ascii:1
>>>print("str:%s"%'characterstring')#格式化字符串
str:characterstring
>>>print("str:%d"%888)#格式化整数
str:888
>>>print("str:%f"%888)#格式浮点数
str:888.000000
>>>print("str:%e"%888)#格式化科学计数浮点数
str:8.880000e+02
>>>print("str:%E"%888)#同上
str:8.880000E+02
>>>print("str:%G"%888)#%f和%E的简写
str:888
>>>print("str:%20f"%888.089)#定义20宽度输出
str:888.089000
>>>print("str:%-20f"%888.089)#用左对齐
str:888.089000
>>>print("str:%+20f"%888.089)#在正数前显示加号
str:+888.089000
>>>print("str:%+-20f"%888.089)#左对齐显示加号
str:+888.089000
>>>print("str:%020f"%888.089)#以0填充默认的空格
str:0000000000888.089000
>>>print("str:%%%20f"%888.089)#在数字前输入%号
str:%888.089000
>>>print("str:%%%-20f"%888.089)#左对齐输出%号
str:%888.089000
>>>print("str:%20.3f"%888.089)#显示最小总宽度20,小数点后位数为3位
str:888.089
自python2.6开始,增加格式化字符串函数str.format():
用法:它通过{}和:来代替%
位置参数不受顺序约束,且可以为{}空,只要format里有相对应的参数值即可,如参数值不够就会报错,参数索引从0开,传入位置参数列表可用*列表
In[27]:'{}+{}={}'.format(1,2,3)#格式化按顺序应用参数值
Out[27]:'1+2=3'
In[28]:'{2}-{1}={0}'.format(1,2,3)#指定顺序应用参数值
Out[28]:'3-2=1'
In[29]:'{0}+{0}={1}'.format(2,3)#指定参数可以重复使用
Out[29]:'2+2=3'
In[30]:'{}+{}={}'.format(2,3)#如不指定顺序,format参数不够就会报错
---------------------------------------------------------------------------
IndexErrorTraceback(mostrecentcalllast)
in()
---->1'{}+{}={}'.format(2,3)
IndexError:tupleindexoutofrange
In[31]:l1=[2,4,8]
In[32]:'{}*{}={}'.format(*l1)#使用列表引用参数值
Out[32]:'2*4=8'
In[33]:dct={'name':'python','age':20}#定义字典
In[35]:'welcomto{name},ageis{age}'.format(name='qi',age=28)#变量引用
Out[35]:'welcomtoqi,ageis28'
In[36]:'welcomto{name},ageis{age}'.format(**dct)#使用**引用字典参数必须填写key值
Out[36]:'welcomtopython,ageis20'
填充与格式化:
In[53]:"{0:>20}".format("string")#从0位开始已空格填充20宽度左对齐
Out[53]:'string'
In[54]:"{0:&>20}".format("string")
Out[54]:'&&&&&&&&&&&&&&string'
In[55]:"{0:#>20}".format("string")#使用#号会有个小bug
....:
Out[55]:'##############string'
In[60]:'{0:+<20}'.format("string")#向右对齐填充+
Out[60]:'string++++++++++++++'
In[61]:'{0:+^20}'.format("string")#剧中对齐填充+
Out[61]:'+++++++string+++++++'
精度与进制:
>>>'{0:.3f}'.format(10/3)#小数位进度格式化
'3.333'
>>>'{0:b}'.format(8)#格式化二进制
'1000'
>>>'{0:o}'.format(9)#格式化八进制
'11'
>>>'{0:x}'.format(26)#格式化十六进制
'1a'
>>>'{0:,}'.format(123456789)#千分位格式化
'123,456,789'
使用索引:
>>>l2=['AA',{'bb':'cc'},('d','e')]#列表索引引用
>>>'outing:{0[0]}'.format(l2)
'outing:AA'
>>>'outing:{0[0]},{0[1]}'.format(l2)#将列表当成一个元素,在其中索引值
"outing:AA,{'bb':'cc'}"
5、python的字符串方法
>>>s='imito'#将字符串的第一个字符改为大写
>>>s.capitalize()
'Imito'
>>>s='IMITO'#将字符串所有字符改为小写
>>>s.casefold()
'imito'
>>>s.center(15)#将字符串剧中,并用空格将字符串填充长度,如指定长度小于实际长度则没有效果
'IMITO'
>>>s='abcabcabcabc'#返回sub在字符串里出现的次数,start,end为可选参数,决定范围
>>>s.count('a',0,12)
4
>>>s.encode(encoding='utf-8',errors='strict')#以encoding指定的编码格式对字符串进行编码
b'abcabcabcabc'
>>>s.endswith('abc',1,12)#检查字符串是否以sub结尾,是返回True,否返回False,start,end为可选参数,决定范围
True
>>>s='a\tb\tc'
>>>s.expandtabs(4)#把字符串的tab字符(\t)转化为空格,如不指定tabsize,默认为8个空格
'abc'
>>>s.find('b')#检测字符串是否在字符串中,如在则返回索引,否则返回-1,可指定起始值。
2
>>>s='hellopython'
>>>s.index('hello')#类似find(),不同在于如果sub不在字符串中,返回异常
0
>>>s.isalnum()#有空格返回false
False
>>>s='hellopython'
>>>s.isalnum()#如果字符串至少有一个字符,并且所有字符都是字母或数字则返回True,否则False
True
>>>s.isalpha()#如果字符串至少有一个字符,并且所有字符都是字母则返回True,否则False
True
>>>s='123'
>>>s.isdigit()#如果字符串只包含数字则返回True,否则返回False
True
>>>s='123'
>>>s.isdecimal()#如果字符串只包含十进制数字则返回True,否则返回False
True
>>>s='ox123'
>>>s.isdecimal()
False
>>>s='0.33'
>>>s.isdecimal()
False
>>>s='abc'
>>>s.islower()#如果字符中至少包含一个能区分大小写的字符,并且这些字符都是小写则返回True,否则返回Flase
True
>>>s='Abc'
>>>s.islower()
False
>>>s='ABC'
>>>s.isupper()#果字符中至少包含一个能区分大小写的字符,并且这些字符都是大写则返回True,否则返回Flase
True
>>>s='ABc'
>>>s.isupper()
False
>>>
>>>s='123'
>>>s.isnumeric()#如果字符串只包含数字字符,则返回True,否则返回False
True
>>>s='123a'
>>>s.isnumeric()
False
>>>'def'.isidentifier()#判断字符串是否包含该语言的保留字
True
>>>'aaa'.isprintable()#判断是否可以打印
True
>>>''.isspace()
False
>>>''.isspace()#判断字符串中至少有一个字符且所有都是空格,否则返回false
True
>>>'a'.isspace()
False
>>>'Abc'.istitle()#判断是否是标题格式,可以理解为首字母大写。
True
>>>'aBC'.istitle()
False
>>>s='123'
>>>'_'.join(s)#返回一个用指定字符串分隔的字,或者是将指定字符加入到另一个字符中。
'1_2_3'
>>>s.join('abc')
'a123b123c'
>>>s='ABC'
>>>s.lower()#返回的是指定字符串的拷贝,并转化成小写
'abc'
>>>s.ljust(10,'+')#可以指定宽度,以及填充字符串,返回的是按宽度,填充字符串格式化后的左对齐的字符串。
'ABC+++++++'
>>>'aaabccc'.partition('b')#在字符串中查找指定的字符,如找到则返回字符前部分,字符本身和后部分,如没找到则返回字符串和两个空字符串。
('aaa','b','ccc')
>>>'aaabccc'.partition('e')
('aaabccc','','')
>>>'aaabccc'.rpartition('b')#与partition一样,但是是从右边开始
('aaa','b','ccc')
>>>'aaabccc'.rpartition('c')
('aaabcc','c','')
>>>'aaaaabbcc'.replace('a','A')#用指定字符串替换指定字符串,如果不指定替换次数,则替换所有
'AAAAAbbcc'
>>>'aaaaabbcc'.replace('a','A',2)
'AAaaabbcc'
>>>'aabbcc'.rfind('a')#返回指定子串的最高索引,如果没找到则返回-1,可以指定要开始替换的起始,结束位置。
1
>>>'aabbcc'.rfind('e')
-1
>>>'aabbcc'.rindex('a')#与上面的rfind一样,只是如果没找到不是返回-1,而是触发错误
1
>>>'aabbcc'.rindex('e')
Traceback(mostrecentcalllast):
File"",line1,in
ValueError:substringnotfound
>>>'aa'.rjust(10,'+')#与ljust()相对应,右对齐
'++++++++aa'
>>>'aa'.ljust(10,'+')
'aa++++++++'
>>>'aabccbddbee'.split('b')##按指定字符串对目标字符串进行切割,可以指定切割次数
['aa','cc','dd','ee']
>>>'aabccbddbee'.split('b',2)
['aa','cc','ddbee']
>>>'aabccbddbee'.rsplit('b',2)#与split作用相同,但是从右侧开始
['aabcc','dd','ee']
>>>'aabb'.strip()#移除字符串两侧的指定字符串,默认移除空格,需要注意的是可以指定多个字符
'aabb'
>>>'aabb'.strip('b')
'aa'
>>>'aabb'.strip('ab')
''
>>>'beaacebb'.rstrip('eb')#与strip一样,从右侧删除指定字符,可以为多个
'beaac'
>>>'aa\nbb\ncc\ndd'.splitlines()#按换行符切割显示,如没指定keepends=True则将换行符移除。
['aa','bb','cc','dd']
>>>'aa\nbb\ncc\ndd'.splitlines(keepends=True)
['aa\n','bb\n','cc\n','dd']
>>>'aabbc'.startswith('a')#判断字符串是否以某个字符开头,可以是多字符
True
>>>'aabbc'.startswith('b')
False
>>>'aabbc'.startswith('aab')
True
>>>'aaBBcc'.swapcase()#转换大小写
'AAbbCC'
>>>'wendisok'.title()#标题格式,首字母大写,其它字符小写
'WendIsOk'
>>>'wendisok'.upper()#将字符全部转换成大写
'WENDISOK'
>>>'wendisok'.zfill(20)#这里的z指zero,用0将字符填充到指定长度
'0000000000wendisok'
以上这篇python之Characterstring(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。