平时敲代码的时候字符串处理规范,方法和一些小技巧总会记不住,需要现查,这里mark小结一下
一、字符串定义
在Python中,单引号和双引号在表示字符串没有区别
str1="Python is 'beautiful'"
str2='Python is "beautiful"'
print str1
print str2
这样做的优点从上面代码可以看出,单引号定义字符串,里面双引号被认定是普通字符,双引号定义字符串也一样,都不需要进行转义,这就是Python开发者常说的易用性。
二、格式化输出(包含字符串)
1、%格式化:%[(name)][flags][width].[precision]typecode
- (name):可选,表示key值
- flags值:可选
- +:右对齐,正数前正号,负数前负号
- -:左对齐,正数前没有符号,负数前负号
- 空格:右对齐,正数前空格,负数前负号
- 0:右对齐,正数前没有符号,负数前负号,用0填充空白处
- width:可选,字符串所占总宽度
- .precision:可选,小数点精度
- typecode:必选,s,d,f 等等
代码示例如下:
#version是指定key值,如果不指定,按照顺序对应
str1="Python%(version)d is '%(how)s'"%{'version':3,'how':'beautiful'}
#%s %.2f %d,float精确度,整数
str2='Python%.1f is "beautiful"'%(2.7)
#d前面的4表示宽度,0表示flags值
str3='heihei%04d'%-3.1212121
#7代表字符串总的所占宽度
str4='xixi%+7.2f'%-2.213
print str1
print str2
print str3
print str4
Python3 is 'beautiful'
Python2.7 is "beautiful"
heihei-003
xixi +2.21
2、format格式化:采用{}和:来取代%,[[fill]align][sign][#][0][width][,][.precision][type]
- fill:可选,空白处填充的字符
- align:可选,对齐方式(需配合width使用)
- <:内容左对齐
- >:内容右对齐(默认)
- =:内容右对齐,将符号放在填充字符左侧,只对数字类型有效。
- ^:内容居中
- sign:可选,有无符号数字
- +:正号加正,负号加负
- -:正号不变,负号加负
- 空格:正号空格,负号加负
- #:可选,对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
- ,:可选,数字分隔符,eg:1,000,000
- width:可选,所占宽度
- .precision:可选,小数位保留精度
- type:可选,格式化类型 s,f,d
示例代码如下:
args=['Python','2.7']
kw={'name':'Python','version':'2.7'}
#format基本形式
s1="{}{} is beautiful".format('Python','2.7')
#位置参数
s2="{}{} is beautiful".format(*args)
#关键字参数
s3="{name}{version} is beautiful".format(**kw)
#+表示填充的内容 ^表示内容居中,11表示所占位数,.2f表示精度与进制
s4="heihei {:+^11.2f}".format(10.345)
print s1
print s2
print s3
print s4
Python2.7 is beautiful
Python2.7 is beautiful
Python2.7 is beautiful
heihei +++10.35+++
三、字符串操作
1、大小写转换
- lower():返回字符串小写格式
- upper():返回字符串大写格式
- title():返回字符串所有单词首字母大写,其它字母小写的格式
- capitalize():返回字符串首字母大写,其它所有字母小写的格式
示例代码如下:
str='abc,XYZ'
print str.lower()
print str.upper()
print str.title()
print str.capitalize()
print str.swapcase()
abc,xyz
ABC,XYZ
Abc,Xyz
Abc,xyz
ABC,xyz
2、更新和替换
str.replace(old,new,count):将old字符串替换为new的字符串,count表示前count个被替换
str="Python2.7 is beautiful 2.7"
#1代表,只有前1个被替换
s=str.replace('2.7', '3',1)
print s
注:简单的可以用replace,但是python大部分复杂的字符串替换,会采用正则表达式去匹配和替换。
3、分割和连接
- split(‘s’,count):用来分割字符串,以‘s'分割,返回一个列表,count表示从左到右分割的次数,还有
- ’c‘.join(s):表示用’c'连接s,s可以是字符,列表,字典等
- strip():表示去掉字符串开头和结尾的空格,同理,rstrip(),lstrip()去掉结尾,开头空格
- 切片:,这篇文章里有介绍
示例代码如下:
str=" Python2.7 is beautiful "
#以t分割,分割一次
s1=str.split('t',1)
#以t分割,再以!连接
s2="!".join(str.split('t'))
#去掉开头结尾空格,再以空格连接
s3=" ".join(str.strip())
#以空格分割,再以空格连接,从下面的字符串长度可以看出作用相当于strip()函数,
s4=" ".join(str.split())
print s1
print s2
print s3
print s4
print len(str),len(s4)
[' Py', 'hon2.7 is beautiful ']
Py!hon2.7 is beau!iful
P y t h o n 2 . 7 i s b e a u t i f u l
Python2.7 is beautiful
26 22
4、删除字符
有效利用分割,拼接等方法;或者采用strip('a')删除两端的字符
5、遍历
enumerate():用于将可遍历的数据对象(列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用于for循环。
#可以同时输出下标和内容
s="Python"
for i,j in enumerate(s):
print i,j
seq=["sadf","sdafsdfasdfa","gjgjghj"]
for m,n in enumerate(seq):
print m,n
#遍历
s="Python"
for i in iter(s):
print i