平时敲代码的时候字符串处理规范,方法和一些小技巧总会记不住,需要现查,这里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