python:字符串格式化详解

一、几个常见的常量

1.所有的ascii字母

print(string.ascii_letters)
#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

2.所有的小写字母

print(string.ascii_lowercase)
#abcdefghijklmnopqrstuvwxyz

3.所有的大写字母

print(string.ascii_uppercase)
#abcdefghijklmnopqrstuvwxyz

4.十进制的数据

print(string.digits)
#0123456789

5.十六进制数据

print(string.hexdigits)
#0123456789abcdefABCDEF

6.八进制数字

print(string.octdigits)
#01234567

7.标点符号

print(string.punctuation)
#!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

 8.所有的可打印字符
 

print(string.printable)

10.所有的空白字符

print(repr(string.whitespace))
# ' \t\n\r\x0b\x0c'

以上是在进行相关的字符串操作中可能用到的一些常用的字符集

二、字符串格式化

1.基本语法

replacement_field =  "{" [field_name] ["!" conversion] [":" format_spec] "}"

用法:

"{[field_name] [! conversion] [:format_spec] }".format(arg1,arg2,....)

解释:替换字段={字段名 转化:格式规范}

2.字段名:

替换字段可以从字段名开始,该名称指定要格式化其值并将其插入输出

(1)字段名可以是一个参数的名称如下:

print('my name is {first_name} {last_name}'.format(last_name='Eric',first_name='Brown'))
name_dic={'first_name':'Brown',
		  'last_name':'Eric'
	}
print('my name is {first_name} {last_name}'.format(**name_dic))

(2)可以是序号:

print(format_string='my name is {1} {0}'.format('Eric','Brown'))

(3)可以是给定的参数中类型所拥有的属性:

c=3-5j
format_string=('The complex number {0} is formed from the real part {0.real} and the imaginary part {0.imag}.').format(c)
print(format_string)

(4)参数中的某些序号所对应的值

test_tuple=(3,5)
test_list=[4,6,8]
format_string='{0[0]}{0[1]}{1[0]}{1[1]}{1[2]}'.format(test_tuple,test_list)
print(format_string)

2.转化:

该处表示在对一个字符串进行格式化之前,首先进行一个强制的转换,转换的方式如下:

conversion可以取地值有3个:!s<==>str() ,!r<==> repr() ,!a<==>ascii()

3者的区别是:
str 转化为一个普通的字符串
repr 在显示字符串中的所有可打印字符,不进行功能化的转化,如\t显示 \t,不是8个空格
ascii 功能上与repr相似,在非ascii字处理的时候,会将非ascii字符转义为\x,\u,\U的形式。

format_string="{0} use format conversion !s-->{0!s},!r-->{0!r},!a-->{0!a}".format('张	’')
print(format_string)
#张	’ use format conversion !s-->张	’,!r-->'张\t’',!a-->'\u5f20\t\u2019'

3.第三个参数 format_spec

语法格式如下:
[[fill]align][sign][#][0][width][grouping_option][.precision][type]

fill:在进行对齐操作的时候的填充的字符,可以是任意的。

align: "<" | ">" | "=" | "^" 对齐操作符,分别对应 字符串左对齐、字符串右对齐、数字填充、居中对齐

sign: "+" | "-" | " " 数字的时候符号的格式化样式

width :对齐的宽度

grouping_option : "_" | ","   对数字按千的长度分组的标识

precision :精度:如浮点数后要显示几位小数

type :显示的类型,字符串的有两类,一个是s,一个None,都代表字符串,数字以下几类: "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

统一的示例代码如下:

print('this left Aligned:{:<10}'.format('test')) #用空格填充,限定长度为10
print('this left Aligned:{:*<10}'.format('test')) #用*填充,限定长度为10
print('this left Aligned:{:1>10}'.format('test')) #用1填充,限定长度为20
print('this left Aligned:{:a^10}'.format('test')) #用a填充,限定长度为30

#数字的符号
print('The positive number is :{:d},The negetive number is :{:d}'.format(5,-5)) #正常显示 
print('The positive number is :{:+d},The negetive number is :{:+d}'.format(5,-5))#显式的显示正号
print('The positive number is :{:-d},The negetive number is :{:-d}'.format(5,-5))#正常显示

#数字的进制转换:
myNum=123456
print('int:{0:d},bin:{0:b},hex:{0:x},oct:{0:o}'.format(myNum))
#前面显示相应的标志符号:如0x,0o,0b等
print('int:{0:d},bin:{0:#b},hex:{0:#X},oct:{0:#o}'.format(myNum))
#千的分割
print('{0:,}'.format(myNum*1000))
# 123,456
print('{0:_}'.format(myNum*1000))
# 123_456

#表示百分数
print('{0:.2%}'.format(0.85))
# 85.00%
print('{0:.3%}'.format(3/4))
# 75.000%

# 表示一个数字的固定的长度
print("length is 5 :{0:05x},{0:0=5o},{0:05d},{0:#05o},{0:#05.1f}".format(123))
# length is 5 :0007b,00173,00123,0o173,123.0

猜你喜欢

转载自blog.csdn.net/qq490765184/article/details/82562623