0. 摘要
Python支持多种格式化字符串的方法,包括%-fromatting、str.format()、f-strings三种,f-strings是Python3.6以后出现的一种新方法,相比其他方法,更简洁、易读、速度快。
1. %-formatting
%格式化字符串是Python中比较老的一种用法。
例1:只有一个变量格式化输出
>>> name = 'Jack'
>>> 'Hello, %s.' % name
'Hello, Jack.'
例2:有多个变量需要替换时,使用这些变量的元祖。
>>> name = 'Jack'
>>> age = 20
>>> "Hello, I'm %s, %d years old." % (name, age)
"Hello, I'm Jack, 20 years old."
2. str.format()
在Python2.6中引入了更新的格式化方式str.format()
例1:需替换的字段用{}标记
>>> name = 'Jack'
>>> age = 20
>>> "Hello, I'm {}, {} years old.".format(name, age)
"Hello, I'm Jack, 20 years old."
例2:使用索引引用变量,这样变量和替换的标记就不必一一对应。
>>> name = 'Jack'
>>> age = 20
>>> language = 'Python'
>>> "Hello, I'm {0}, {1} years old. My name is {0}".format(name, age)
"Hello, I'm Jack, 20 years old. My name is Jack"
例3:使用名称引用变量替换
>>> name = 'Jack'
>>> age = 20
>>> "Hello, I'm {na}, {ag} years old. My name is {na}".format(na=name, ag=age)
"Hello, I'm Jack, 20 years old. My name is Jack"
3. f-strings
Python3.6中使用了一种更加简洁明了的格式化方法,该方法允许在字符串中嵌入变量、表达式。该方法使用格式: f"string"
例1:
>>> name = 'Jack'
>>> age = 20
>>> f"Hello, I'm {name}, {age} years old."
"Hello, I'm Jack, 20 years old."
例2:使用任意表达式
>>> f"{20*5}"
''
例3:调用函数
>>> name = "Jack"
>>> f"Hello, I'm {name.lower()}"
"Hello, I'm jack"
例4:多行文本
>>> f"""
... I'm {name},
... I'm {age} years old.
... """
"\nI'm Jack,\nI'm 20 years old.\n"
参考文档:
[博客] python3 f-string格式化字符串的高级用法(中文)
[官方文档] PEP 498 -- Literal String Interpolation(英文)