总结一下在学习过程中遇到的字符串问题。
格式化操作符(%)
"%"是Python风格的字符串格式化操作符
%r
——优先用repr()函数进行字符串转换
%s
——优先用str()函数进行字符串转换
%d / %i
——转成有符号十进制数
%u
——转成无符号十进制数
%o
——转成无符号八进制数
%f / %F
——转成浮点数(小数部分自然截断)
格式化操作符辅助符
-
——用做左对齐
m.n
——m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
#
——在八进制数前面显示零(0),在十六进制前面显示"0x"或者"0X"(取决 于用的是"x"还是"X")
字符串内建函数format()
格式化字符串函数str.format()
,通过这个函数同样可以对字符串进行格式化处理。在format()函数中,使用“{}”符号来当作格式化操作符。
- 位置参数
根据format()里边的参数位置进行索引
print "{0} is {1} years old".format("Wilber", 28)
print "{} is {} years old".format("Wilber", 28)
print "Hi, {0}! {0} is {1} years old".format("Wilber", 28)
- 关键字参数
print "{name} is {age} years old".format(name = "Wilber", age = 28)
- 下标参数
li = ["Wilber", 28]
print "{0[0]} is {0[1]} years old".format(li)
- 填充字符
格式{:填充符 格式符 宽度}.format(…)
:
后跟填充字符,不指定默认为空格填充,格式符有三种:^
、<
、>
分别表示居中、左对齐和右对齐,且只能是一个字符,格式符后跟宽度
print '{:>8}'.format('3.14')
print '{:0>8}'.format('3.14')
还可以用来表示浮点精度:
print '{:.4f}'.format(3.1415926)
print '{:0>10.4f}'.format(3.1415926)
字符串内建函数
其中S均表示任意一个字符串
小写
S.lower()
大写
S.upper()
大小写互换
S.swapcase()
首字母大写
S.capitalize()
输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。
S.ljust(width,[fillchar])
右对齐
S.rjust(width,[fillchar])
中间对齐
S.center(width, [fillchar])
返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在S[start:end]中搜索
S.find(substr, [start, [end]])
返回S中最后出现的substr的第一个字母的标号,如果S中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号
S.rfind(substr, [start, [end]])
计算substr在S中出现的次数
S.count(substr, [start, [end]])
把S中的oldstar替换为newstr,count为替换次数
S.replace(oldstr, newstr, [count])
把S中前后chars中有的字符全部去掉,可以理解为把S前后chars替换为None
S.strip([chars])
S.lstrip([chars])
S.rstrip([chars])
以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符
S.split([sep, [maxsplit]])
把seq代表的字符串序列,用S连接起来
S.join(seq)