当前位置: 首页 > 工具软件 > F# > 使用案例 >

python:f/F,format,%的用法

左丘善
2023-12-01

一.f/F的用法

参考文章
1.解析变量

name = 'zhangs'
age = 20
res2 = F"姓名:{name},年龄:{age}"
print(res2)

结果:姓名:zhangs,年龄:20

2.解析字典

one_dict = {'name': 'zhangs', 'age': 18, None: True}
res3 = F"姓名:{one_dict['name']}, 年龄:{one_dict['age']} ,None:{one_dict[None]}"
print(res3)

结果:姓名:zhangs, 年龄:18 ,None:True

3.解析列表

one_list = [1, 2, 3, 'a', [1, 2, 3]]
res4 = F"列表值:{one_list[0]} {one_list[3]} {one_list[4][-1]}"
print(res4)
 
结果:列表值:1 a 3

4.解析元组

one_tuple = (1, 2, "a")
res5 = F'元组值:{one_tuple[1]} {one_tuple[2]}'
print(res5)

结果:元组值:2 a

5.解析当前日期及时分秒

import datetime

today = datetime.datetime.now()
print(today)
结果:2019-11-13 10:39:39.576568

res6 = F"今天的日期:{today:%Y-%m-%d} {today:%H:%M:%S} "
print(res6)
今天的日期:2019-11-13 10:39:39

6.解析浮点数

a = 1
b = 3
res1 = F"a/b浮点数值为:{float('%.5f' %(a/b))}"
print(res1)
结果:a/b浮点数值为:0.33333

二.%的用法

参考文章

1、整数的输出(进制转换)

print('%o' % 20)
24
print('%d' % 20)
20
print('%x' % 20)
14

2、浮点数输出
(1)格式化输出
%f ——保留小数点后面六位有效数字
  %.3f,保留3位小数位
%e ——保留小数点后面六位有效数字,指数形式输出
  %.3e,保留3位小数位,使用科学计数法
%g ——在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法
  %.3g,保留3位有效数字,使用小数或科学计数法

>>> print('%f' % 1.11)           # 默认保留6位小数
1.110000
>>> print('%.1f' % 1.11)         # 取1位小数
1.1
>>> print('%e' % 1.11)           # 默认6位小数,用科学计数法
1.110000e+00
>>> print('%.3e' % 1.11)         # 取3位小数,用科学计数法
1.110e+00
>>> print('%g' % 1111.1111)      # 默认6位有效数字
1111.11
>>> print('%.7g' % 1111.1111)    # 取7位有效数字
1111.111
>>> print('%.2g' % 1111.1111)    # 取2位有效数字,自动转换为科学计数法
1.1e+03

2、字符串输出
%s
%10s——右对齐,占位符10位
%-10s——左对齐,占位符10位
%.2s——截取2位字符串
%10.2s——10位占位符,截取两位字符串

>>> print('%s' % 'hello world')         # 字符串输出
hello world
>>> print('%20s' % 'hello world')       # 右对齐,取20位,不够则补位
         hello world
>>> print('%-20s' % 'hello world')      # 左对齐,取20位,不够则补位
hello world
>>> print('%.2s' % 'hello world')       # 取2位
he
>>> print('%10.2s' % 'hello world')     # 右对齐,取2位
        he
>>> print('%-10.2s' % 'hello world')    # 左对齐,取2位
he

三. format用法

参考文章
相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’
1.位置匹配
  (1)不带编号,即“{}”

(2)带数字编号,可调换顺序,即“{1}”、“{2}”

(3)带关键字,即“{a}”、“{tom}”

>>> print('{} {}'.format('hello','world'))                # 不带字段
hello world
>>> print('{0} {1}'.format('hello','world'))              # 带数字编号
hello world
>>> print('{0} {1} {0}'.format('hello','world'))          # 打乱顺序
hello world hello
>>> print('{1} {1} {0}'.format('hello','world'))
world world hello
>>> print('{a} {tom} {a}'.format(tom='hello',a='world'))  # 带关键字
world hello world
>>> '{0}, {1}, {2}'.format('a', 'b', 'c')
'a, b, c'
>>> '{}, {}, {}'.format('a', 'b', 'c')      # 3.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'
>>> coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
>>> 'Coordinates: {latitude}, {longitude}'.format(**coord)        #注意前面**号
'Coordinates: 37.24N, -115.81W'
>>>'Coordinates: {0[latitude]}, {0[longitude]}'.format(coord)     #结果同上,原理同下
'Coordinates: 37.24N, -115.81W'
>>> coord = (3, 5)
>>> 'X: {0[0]};  Y: {0[1]}'.format(coord)
'X: 3;  Y: 5'
>>> a = {'a': 'test_a', 'b': 'test_b'}
>>> 'X: {0[a]};  Y: {0[b]}'.format(a)
'X: test_a;  Y: test_b'

通过下标或key匹配参数

2.格式转换
‘b’ - 二进制。将数字以2为基数进行输出。
‘c’ - 字符。在打印之前将整数转换成对应的Unicode字符串。
‘d’ - 十进制整数。将数字以10为基数进行输出。
‘o’ - 八进制。将数字以8为基数进行输出。
‘x’ - 十六进制。将数字以16为基数进行输出,9以上的位数用小写字母。
‘e’ - 幂符号。用科学计数法打印数字。用’e’表示幂。
‘g’ - 一般格式。将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印。
‘n’ - 数字。当值为整数时和’d’相同,值为浮点数时和’g’相同。不同的是它会根据区域设置插入数字分隔符。
‘%’ - 百分数。将数值乘以100然后以fixed-point(‘f’)格式打印,值后面会有一个百分号。

>>> print('{0:b}'.format(3))
11
>>> print('{:c}'.format(20))

>>> print('{:d}'.format(20))
20
>>> print('{:o}'.format(20))
24
>>> print('{:x}'.format(20))
14
>>> print('{:e}'.format(20))
2.000000e+01
>>> print('{:g}'.format(20.1))
20.1
>>> print('{:f}'.format(20))
20.000000
>>> print('{:n}'.format(20))
20
>>> print('{:%}'.format(20))
2000.000000%
>>>

3.进制转换

>>> # format also supports binary numbers
>>> "int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(42)
'int: 42;  hex: 2a;  oct: 52;  bin: 101010'
>>> # with 0x, 0o, or 0b as prefix:
>>> "int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42)     # 在前面加“#”,则带进制前缀
'int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010'

4.百分数%

>>> points = 19
>>> total = 22
>>> 'Correct answers: {:.2%}'.format(points/total)
'Correct answers: 86.36%'

5.正负符号显示

>>> '{:+f}; {:+f}'.format(3.14, -3.14)     # 总是显示符号
'+3.140000; -3.140000'
>>> '{: f}; {: f}'.format(3.14, -3.14)     # 若是+数,则在前面留空格
' 3.140000; -3.140000'
>>> '{:-f}; {:-f}'.format(3.14, -3.14)     # -数时显示-,与'{:f}; {:f}'一致
'3.140000; -3.140000'

6.时间

>>> import datetime
>>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
>>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
'2010-07-04 12:15:58'

7.format的用法变形

# a.format(b)
>>> "{0} {1}".format("hello","world")
'hello world'


# f"xxxx"# 可在字符串前加f以达到格式化的目的,在{}里加入对象,此为format的另一种形式:
>>> a = "hello"
>>> b = "world"
>>> f"{a} {b}"
'hello world'



name = 'jack'
age = 18
sex = 'man'
job = "IT"
salary = 9999.99

print(f'my name is {name.capitalize()}.')
print(f'I am {age:*^10} years old.')
print(f'I am a {sex}')
print(f'My salary is {salary:10.3f}')

# 结果
my name is Jack.
I am ****18**** years old.
I am a man
My salary is   9999.990
 类似资料: