Python随笔5

字符串的格式化

Python中内置了%对字符串的格式化

在字符串外面的%左侧是一个字符串,将这个字符串当作模板,字符串里面有%(格式符),这些格式符为真实值预留位置;在字符串外面的%右侧是真实值,这些值用元组放到一起,左边有多少个格式符,右边就对应有多少个值,不能多也不能少。

%s:字符串格式符

例:

str1 = "I am %s,how are you %s"
tuple1 = ("lilei","hanmeimei")
print(str1 % tuple1)

结果

I am lilei,how are you hanmeimei

%d:整数十进制

%x:16进制

%f:浮点型

%r:打印时能重现它所代表的对象。reper()方法

例:

print("第一种情况:")
print("I am %d years old" % 22)
print("I am %s years old" % 22)
print("I am %r years old" % 22)
print("第二种情况:")
str="I am %d years old" % 22
print("she said:%s" % str)
print("she said:%r" % str) #结果给字符串加了单引号
print("第三种情况:")
import datetime
time=datetime.date.today()
print("today is %s" % time)
print("today is %r" % time) #日期格式也不一样

结果:

第一种情况:
I am 22 years old
I am 22 years old
I am 22 years old
第二种情况:
she said:I am 22 years old
she said:'I am 22 years old'
第三种情况:
today is 2018-11-07
today is datetime.date(2018, 11, 7)

字段宽度和精度:

import math
#pi的精确度和位数
print(math.pi)
#10表示字段宽度为10位,小数点加上小数点前后的位数,小数点后面的表示精度
print("#10表示字段宽度为10位,小数点加上小数点前后的位数,小数点后面的表示精度")
print("%10f" % math.pi)
print("%.2f" % math.pi )
print("%10.2f" % math.pi)
#对于字符串,小数点后面表示输出的最大宽度(在字符串中从左往右取)
print("#对于字符串,小数点后面表示输出的最大宽度(在字符串中从左往右取)")
print("%.8s" % "Python is great!")
#对于*,小数点前后的位数将从元组中取
print("#对于*,小数点前后的位数将从元组中取")
print("%.*s" % (4,"Python is great!"))
print("%.*f" % (2,math.pi))
print("%*.*f" % (10,2,math.pi))

结果:

3.141592653589793
#10表示字段宽度为10位,小数点加上小数点前后的位数,小数点后面的表示精度
  3.141593
3.14
      3.14
#对于字符串,小数点后面表示输出的最大宽度(在字符串中从左往右取)
Python i
#对于*,小数点前后的位数将从元组中取
Pyth
3.14
      3.14

对齐、加减号、补0

from math import pi
#010表示宽度为10,左侧不足补0
print("#补0")
print("%010.2f"% pi)
#默认为右对齐,-表示左对齐
print("-表示左对齐")
print("%-10.2f"% pi)
#空格表示正数前面加上空格
print("空格表示整数前面加上空格")
print("% 5d"% 10)
print("% 5d"% -10)
#"+"表示前面加上正负号
print("+表示要加上正负号")
print(("%+2d"% 10) + "
" + ("%+11f"% -pi))

结果:

#补0
0000003.14
-表示左对齐
3.14      
空格表示整数前面加上空格
   10
  -10
+表示要加上正负号
+10
  -3.141593

总结:

1. %字符:标记转换说明符的开始

2. 转换标志(可选):-表示左对齐;+表示在转换值之前要加上正负号;“”表示正数之
前保留空格;0表示转换值若位数丌够则用0填充。
3. 最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度。
4. 点(.)后跟精度值(可选):如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是”*”,那么精度将会从元组中读出。

原文地址:https://www.cnblogs.com/bigbigtong/p/9926272.html