C:\Users\Test>python --version
Python 3.6.2
str.rjust # 右对齐
str.center # 居中
str.ljust # 左对齐
>>>help(str.rjust)
rjust(...)
S.rjust(width[, fillchar]) -> str
Return S right-justified in a string of length width. Padding is
done using the specified fill character (default is a space).
>>> "loulan".rjust(10)
' loulan'
>>> "loulan".rjust(10,'*')
'****loulan'
>>>"loulan".rjust(3)
'loulan'
>>> "loulan".rjust(3,'*')
'loulan'
%在字符串中是格式化操作符
>>> "我是%s,大家好"%"楼兰"
'我是楼兰,大家好'
conversion | meaning |
---|---|
‘d’ | 整数十进制(decimal),遇浮点数则采用去尾法转为整数 |
‘i’ | 整数十进制(decimal),遇浮点数则采用去尾法转为整数 |
‘u’ | 已经过时,相当于’d’ |
‘o’ | 八进制数值(octal),遇其他进制数字,则自动转为八进制 |
‘x’ | 十六进制(小写字符) |
‘X’ | 十六进制(大写字符) |
‘e’ | 科学计数法表示(e用小写字符) |
‘E’ | 科学记数法表示(E用大写字符) |
‘f’ | 浮点数十进制(小数点后保留六位,四舍五入) |
‘F’ | 浮点数十进制(小数点后保留六位,四舍五入) |
‘g’ | 当整数部分>六位有效数字时,采用科学记数法;反之,保留六位有效数字,五舍六入 |
‘G’ | 同’g’,科学技术法时,E用大写 |
‘c’ | 单个字符(接受单个字符,或者对应ascii码值,类似chr()函数) |
‘r’ | 字符串(相当于使用repr()函数) |
’s’ | 字符串(相当于使用str()函数) |
‘a’ | 字符串(相当于使用ascii()函数) |
ascii()函数
返回一个可打印的对象字符串方式表示,如果是非ascii字符就会输出\x,\u或\U等字符来表示。与python2版本里的repr()是等效的函数
>>> ascii('楼兰')
"'\\u697c\\u5170'"
repr()函数与str()函数
>>> '%d'%123.123 #小数格式化为整数
'123'
>>> '%d'%0o17 #八进制格式化为十进制
'15'
>>> '%o'%123 #十进制的123格式化为八进制
'173'
>>> '%o'%0o17 #八进制的17格式化为八进制
'17'
>>> '%x'%123 #十进制的123格式化为十六进制(小写)
'7b'
>>> '%X'%123 #十进制的123格式化为十六进制(大写)
'7B'
>>> '%e'%123 #十进制的123格式化为科学记数法表示
'1.230000e+02'
>>> '%f'%123 #十进制整数123格式化为浮点数,小数点后默认保留六位
'123.000000'
>>> '%g'%123456
'123456'
>>> '%g'%1234567 #整数部分超过六位时采用科学记数法
'1.23457e+06'
>>> '%g'%123456.666 #整数部分不足六位但是总位数超过六位时,默认保留六位有效数字,五舍六入
'123457'
>>> '%g'%1234.5 #总位数小于等于六位时,原样输出
'1234.5'
conversion | meaning |
---|---|
‘#’ | 在进制数前面加标识符,如八进制的0o,十六进制的0x |
‘n’ | 指定转化后字符串的长度 |
‘.m’ | 指定小数点后保留的位数 |
‘-‘ | 指定对齐方式为,左对齐 |
‘+’ | 为正整数添加+符号 |
>>> '%#x'%123
'0x7b'
>>> '%#o'%123
'0o173'
>>> '%10s'%'loulan'
' loulan'
>>> '%-10s'%'loulan'
'loulan '
>>> '%.3f'%123.123123
'123.123'
>>> '%+d'%123
'+123'
笔者在这里向大家极力推荐使用format函数来格式化字符串
相对于格式化操作符’%’来说,更为强大,而且格式化操作符已经属于古董级了
官方文档里称fomat为mini-language,可见一斑
format_spec : [ [ fill ] align ] [ sign ] [ # ] [ 0 ] [ width ] [ grouping_option ] [ .precision ] [ type ]
format_spec | meaning |
---|---|
fill | 用于填充少于width的字符,使用前,必须先指定align的值 |
aligh | 对齐方式,多先设置width |
sign | 主要用于显示正数的+符号 |
width | 设置字符串的宽度 |
grouping_options | 自动分组,如数字三位一组1,000,000 |
.precision | 设置小数点后保留的位数 |
type | 设置格式化的类型,进制,浮点数,整数等 |
options | meaning |
---|---|
‘<’ | 左对齐 |
‘>’ | 右对齐 |
‘=’ | 主要用于输出+00012这种格式时,即将sign放在width之前,而且sign不计入宽度(见下方例子) |
‘^’ | 居中 |
理论上要输出+00012这种格式时,
需要设置fill=’0’,然后align=’>’,然后sign=’+’,然后width=’5’;
即format_spec=’0>+5’
>>> format(12,'0>+5') #此时+计入宽度
'00+12'
因此用到align=’=’
>>> format(12,'0=+5') #此时+未计入宽度
'+00123'
options | meaning |
---|---|
‘+’ | 在正数前面添加+ |
‘-‘ | 在负数前面添加-(默认) |
’ ‘ | 正数时前面添加空格,负数时前面添加- |
>>> format(123,'> 5')
' 123'
>>> format(-123,'> 5')
' -123'
options | meaning |
---|---|
“_” | 用_分割整数部分,适用于其他进制 |
“,” | 用,分割整数部分,只能用于十进制数字 |
>>> format(1200000.1234,',') #小数部分未分割
'1,200,000.1234'
>>> format(-1200000,',') #十进制是三位一组
'-1,200,000'
>>> format(-1200000,'_')
'-1_200_000'
>>> format(1234,'_b') #二进制是四位一组
'100_1101_0010
options | meaning |
---|---|
‘b’ | 二进制 |
‘c’ | character,即ascii码所对应的字符 |
‘d’ | 十进制 |
‘e’ | 科学记数法(e) |
‘E’ | 科学记数法(E) |
‘f’ | 浮点数,默认保留小数点后六位,四舍五入 |
‘F’ | Same as ‘f’, but converts nan to NAN and inf to INF.(尴尬,没理解) |
‘g’ | 当整数部分>六位有效数字时,采用科学记数法(e);反之,保留六位有效数字,五舍六入 |
‘G’ | 当整数部分>六位有效数字时,采用科学记数法(E);反之,保留六位有效数字,五舍六入 |
‘n’ | Same as ‘g’, except that it uses the current locale setting to insert the appropriate number separator characters.(尴尬,没理解) |
‘o’ | 八进制 |
’s’ | 字符串 |
‘x’ | 十六进制(abcdef) |
‘X’ | 十六进制(ABCDEF) |
‘%’ | 百分比 |
format即是str的一个方法,也是一个内置函数
str.format()
可以元素的名称进行访问
>>> '{0}, {1}, {2}'.format('a', 'b', 'c')
'a, b, c'
>>> '{}, {}, {}'.format('a', 'b', 'c') # python3.1之后
'a, b, c'
>>> '{2}, {1}, {0}'.format('a', 'b', 'c')
'c, b, a'
>>> '{2}, {1}, {0}'.format(*'abc') # 可以利用*序列解包
'c, b, a'
>>> '{0}{1}{0}'.format('abra', 'cad') # 可以重复访问一个值
'abracadabra'
可以通过元素的名称进行访问
>>> 'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W')
'Coordinates: 37.24N, -115.81W'
在冒号的后面添加format_spec
>>> '{:>10}'.format('aaa')
' aaa'
format()
format(value, format_spec='', /)
>>> format('loulan','*^10')
'**loulan**
>>> format(123,'#o')
'0o173'
因大多用法跟格式化操作符%相同,笔者便不再赘述
呃。。上面type的n选项以及F选项,笔者实在是没测试明白,要是哪位大佬知道的话,还望不惜笔墨。
尴尬~~