Python字符串f-string格式化
介绍与参考
f-string与%-formatting语句和str.format()函数相似,在Python3.6可使用f-string进行字符串格式化容
提示:以下是本篇文章正文内容,下面案例可供参考
一、应用
1.简单实用
# 添加新列
def get_nianyueri(x):
year,month,day = x["ymd"].split("-")
return f"{year}年{month}月{day}日"
#apply(函数,轴)
df["中文日期"] = df.apply(get_nianyueri, axis=1)
df["中文日期"]
0 2018年01月01日
1 2018年01月02日
2 2018年01月03日
3 2018年01月04日
4 2018年01月05日
...
360 2018年12月27日
361 2018年12月28日
362 2018年12月29日
363 2018年12月30日
364 2018年12月31日
Name: 中文日期, Length: 365, dtype: object
2.函数调用
- string的大括号 {} 可以填入表达式或调用函数,Python会求出其结果并填入返回的字符串内:
>>> f'A total number of {24 * 8 + 4}'
'A total number of 196'
>>> f'Complex number {(2 + 2j) / (2 - 3j)}'
'Complex number (-0.15384615384615388+0.7692307692307692j)'
>>> name = 'ERIC'
>>> f'My name is {name.lower()}'
'My name is eric'
>>> import math
>>> f'The answer is {math.log(math.pi)}'
'The answer is 1.1447298858494002'
3.注意事项
- f-string大括号内所用的引号不能和大括号外的引号定界符冲突, ’ 和 " 区分
- 大括号外的引号还可以使用 \ 转义,但大括号内不能使用 \ 转义
- f-string大括号外如果需要显示大括号,则应输入连续两个大括号 {{ }}
- f-string大括号内不能使用 \ 转义,f-string大括号内根本就不允许出现 \,如果确实需要 转义,则应首先将包含 \ 的内容用一个变量表示,再在f-string大括号内填入变量名
>>> f"newline: {ord('\n')}"
File "<stdin>", line 1
SyntaxError: f-string expression part cannot include a backslash
>>> newline = ord('\n')
>>> f'newline: {newline}'
'newline: 10'
- f-string大括号内也可填入lambda表达式,但lambda表达式的 : 会被f-string误认为是表达式与格式描述符之间的分隔符,为避免歧义,需要将lambda表达式置于括号 () 内
>>> f'result is {(lambda x: x ** 2 + 1) (2)}'
'result is 5'
>>> f'result is {(lambda x: x ** 2 + 1) (2):<+7.2f}'
'result is +5.00 '
4.多行f-string
略,详见参考