+

a=111
b="111"
print(a,b)
#print(a+b) int不能与str 相加,会报错!
print(str(a)+b)

非常普通,初学者也会用。但是需要把type全部对齐str,不然会报错。写起来有点丑。

.format()

a=111
print("{}".format(a))

没type烦恼,而且可以把变量和字符串分开,灵活。缺点是变量多了以后只用"{}"容易对歪

b="111"
print("{a}".format(a=b))

: 表示后面开始写格式规则
{:.2f}保留小数
{:10}统一宽度
{:<10}左对齐
{:>10}右对齐
{:^10}居中
{:08}用0填充宽度
{:*^10}用*填充宽度,居中
{:8.2f}填充宽度,保留2位小数
{:08.2f}用0填充宽度,保留2位小数
{:,}千分位逗号
"{:,.2f}千分位逗号
{:.2%}百分比

进制自动转换

n = 255
print("{:b}".format(n))   # 11111111
print("{:o}".format(n))   # 377
print("{:x}".format(n))   # ff
print("{:X}".format(n))   # FF

正负号自动处理

print("{:+}".format(12))   # +12
print("{:+}".format(-12))  # -12
print("{: }".format(12))   #  12
print("{: }".format(-12))  # -12

用字典输入

d = {"a": 111, "b": "222"}
print("{0[a]},{0[b]}".format(d))

print("{a},{b}".format_map(d))

print("{a},{b}".format(**d))

f-string

非常常用,非常方便,但如果{}内需要打引号,就必须与最外层string的引号不同。单引号-双引号

a=111
b="111"
print(f"{a},{b}")

:写法与.format()完全对应

.join()

print(''.join(["1","2"]))

优点是一列很清晰,缺点是必须str()

%

非常古典的字符串装配方法,C语言入门必学

%s:字符串
%d:整数
%f:浮点数
%x:十六进制
%o:八进制

  1. 保留小数
x = 3.1415926
print("%.2f" % x)   # 3.14
print("%.3f" % x)   # 3.142

%.2f:保留 2 位小数
%.3f:保留 3 位小数

  1. 控制总宽度
x = 123
print("|%8d|" % x)

输出:

| 123|
表示总宽度至少 8,默认右对齐。

  1. 宽度 + 小数位
x = 3.1415926
print("|%8.2f|" % x)

输出:

| 3.14|
含义:

总宽度 8
小数 2 位

  1. 补零
x = 123
print("%08d" % x)   # 00000123

浮点数也行:

x = 3.14
print("%08.2f" % x)   # 00003.14
  1. 左对齐
print("|%-8d|" % 123)

|123 |

  • 表示左对齐。
  1. 字符串宽度控制
name = "Tom"
print("|%10s|" % name)   # 右对齐
print("|%-10s|" % name)  # 左对齐

x = 12345.678
print("%e" % x)   # 1.234568e+04
print("%.2e" % x) # 1.23e+04

print("%.2f%%" % 12.34)   # 12.34%

字典写法
data = {"name": "Tom", "age": 18}
print("name=%(name)s, age=%(age)d" % data)

语法糖:隐式字符串字面量拼接

s = "abc" "def"
print(s)   # abcdef

s = (
    "hello "
    "world"
)
print(s)   # hello world