f-strings: Python字符串处理的瑞士军刀
从 3.6 开始,Python 新增了一个格式化字符串的方法,称之为 f-string。
其用法就是在python原始字符串的基础上增加 f/F 前缀,以大括号 {} 标明被替换的字段。
f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。
变量嵌入 & 变量拼接
改变以往占位符或加号拼接的方式,使得字符串拼接更加简单直观,可读性也更好。
name = "Tom"
print(f"I'm {name}")
# I'm Tom
表达式求值
print(f"3 x 2 = {3*2}")
# 3 x 2 = 6
print(f"{3 * 2 = }")
# 3 * 2 = 6
调用函数
name = "Tom"
print(f"I'm {name.lower()}")
# I'm tom
多行string
name, job = "tom", "student"
s = f"""I'm {name.capitalize()},
and I'm a {job.capitalize()}"""
print(s)
"""
I'm Tom,
and I'm a Student
"""
对齐
先看下语法规则:
Syntax: {:[width][.precision][type]}
对齐效果由width控制:
<:左对齐>:右对齐(默认)^:居中对齐
word = "python"
>>> f"|{word:<10}|"
'|python |'
>>> f"|{word:>10}|"
'| python|'
>>> f"|{word:^10}|"
'| python |'
带有补全的对齐效果:
# 本例用小数点来补全空余内容
>>> f"|{word:.<10}|"
'|python....|'
>>> f"|{word:.>10}|"
'|....python|'
>>> f"|{word:.^10}|"
'|..python..|'
例子:
格式化一个日期,要求月份、天数用两位表示,不足两位补0
year, month, day = 2022, 1, 1
>>> f"{year}-{month:0>2}-{day:0>2}"
'2022-01-01'
数字格式化
Syntax: {:[width][.precision][type]}
由precision指定精度,type对应数据类型。
type:
- s:字符串格式(默认)
- d:整型
- e:科学计数,默认precision为6
- f:浮点数,默认precision为6
- %:百分比格式,默认浮点数格式,外加百分比格式化
浮点数精度格式化
同时会自动四舍五入。
pi = 3.141592654
print(f"PI = {pi:.2f}")
# PI = 3.14
print(f"PI = {pi:.3f}")
# PI = 3.142
科学计数
print(f"{pi:e}")
# 3.141593e+00
print(f"{pi:.2e}")
# 3.14e+00
百分比格式化
兼顾小数位保留和百分号格式化功能。
print(f"PI = {pi:.3%}")
# PI = 314.159%
print(f"PI = {pi:.2%}")
# PI = 314.16%
千位分隔符
使用 , 格式化数字展示(常用于金额),易于阅读
>>> f"{234234234:,}"
'234,234,234'
>>> f"{234234234.1314:,.2f}"
'234,234,234.13'
进制转换
先看看python中常用的用法及其效果:
num = 23
bin(num) # '0b10111'
oct(num) # '0o27'
hex(num) # '0x17'
在f-string中,b、o、d、x分别代表二进制、八进制、十进制、十六进制
f"{num:b}" # '10111'
f"{num:o}" # '27'
f"{num:d}" # '23'
f"{num:x}" # '17'
要想实现常用用法的效果,进制规则代码前需要加#号:
f"{num:#b}" # '0b10111'
f"{num:#o}" # '0o27'
f"{num:#d}" # '23'
f"{num:#x}" # '0x17'
lambda表达式
>>> f"result is {(lambda x: x**2+1)(5)}"
'result is 26'
日期格式化
日期格式信息,适用于 date、datetime 和 time 对象
today = datetime.datetime.today()
f"{today:%Y}" # '2022'
f"{today:%Y-%m}" # '2022-12'
f"{today:%Y-%m-%d}" # '2022-12-16'
f"{today:%F}" # '2022-12-16'
f"{today:%D}" # '12/16/22'
f"{today:%X}" # '21:01:27'
f"{today:%F %X}" # '2022-12-16 21:01:27'
参考
- python docs: Formatted string literals
- PEP 498 – Literal String Interpolation
- A Guide to Formatting with f-strings in Python
- A Simple Guide to String Formatting in Python Using f-strings
f-strings: Python字符串处理的瑞士军刀的更多相关文章
- StackOverFlow排错翻译 - Python字符串替换: How do I replace everything between two strings without replacing the strings?
StackOverFlow排错翻译 - Python字符串替换: How do I replace everything between two strings without replacing t ...
- RMQ 字符串 F. Strings and Queries
F. Strings and Queries time limit per test 2.5 s memory limit per test 256 MB input standard input o ...
- python 字符串探讨
本文内容基于python3 几乎所有有用的程序都会涉及到某些文本处理,不管是解析数据还是产生输出.字符串的学习是重点中的重点,这一节将重点关注文本的操作处理,比如提取字符串,搜索,替换以及解析等.大部 ...
- python——字符串 & 正则表达
raw字符串(原始字符串) 所见即所得,例如r''My's\n'' Python转义字符 在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符.如下表: 转义字符 描述 \(在行尾时) 续 ...
- python字符串的方法
python字符串的方法 ############7个基本方法############ 1:join def join(self, ab=None, pq=None, rs=None): # real ...
- python字符串、字符串处理函数及字符串相关操作
python字符串.字符串处理函数及字符串相关操作 字符串介绍 python字符串表示 Python除处理数字外还可以处理字符串,字符串用单撇号或双撇号包裹: >>> 'spam e ...
- Python 字符串
Python访问字符串中的值 Python不支持单字符类型,单字符也在Python也是作为一个字符串使用. Python访问子字符串,可以使用方括号来截取字符串,如下实例: #!/usr/bin/py ...
- Python 字符串格式化
Python 字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存 一 ...
- Python 字符串处理大全.
Python 字符串 字符串是Pyhton中常用的数据类型,我们可以使用引号来创建字符串 . 创建字符串很简单 , 就不说了 . Python 访问字符串中的值 鬼叔本着简洁 使用的设计目的 , 在设 ...
- 7.python字符串-内置方法分析
上篇对python中的字符串内置方法进行了列举和简单说明,但这些方法太多,逐一背下效率实在太低,下面我来对这些方法按照其功能进行总结: 1.字母大小写相关(中文无效) 1.1 S.upper() -& ...
随机推荐
- 在 CentOS 8/RHEL 8 上安装和使用 Cockpit
Cockpit 是一个基于 Web 的服务器管理工具,可用于 CentOS 和 RHEL 系统.最近发布的 CentOS 8 和 RHEL 8,其中 cockpit 是默认的服务器管理工具.它的软件包 ...
- 为什么阿里Java开发手册不推荐使用Timestamp
开发手册 不推荐用java.sql.Date.java.sql.Time网上说的文章有很多. 参考文章:一文告诉你Java日期时间API到底有多烂 但为什么不推荐使用java.sql.Timestam ...
- typora基础和计算机五大组成部分
typora typora软件 是一款适合于IT行业文本编辑器,笔记,当下来说,非常火爆,可以使用多种语言,python java... 安装的时候路径选择可以设置一些简单便于后续查找的文件路 ...
- 《吐血整理》高级系列教程-吃透Fiddler抓包教程(26)-Fiddler如何抓取Android7.0以上的Https包-上篇
1.简介 众所周知,假如设备是android 7.0+的系统同时应用设置targetSdkVersion >= 24的话,那么应用默认是不信任安装的Fiddler用户证书的,所以你就没法抓到应用 ...
- csv2ECharts,**一行命令查看数据趋势图 工具分享**
csv2ECharts 一行命令查看数据趋势图! 联系:luomgf@163.com,欢迎交流提出建议 只有一个文件,基于shell,实现将CSV格式数据转化为数据图.运维中尝尝需要查看某个监控指标的 ...
- golang channel底层结构和实现
一.介绍 Golang 设计模式: 不要通过共享内存来通信,而要通过通信实现内存共享 channel是基于通信顺序模型(communication sequential processes, CSP) ...
- 一天一道Java面试题----第十二天(如何实现接口幂等性)
这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 1.如何实现接口幂等性 1.如何实现接口幂等性 唯一id.每次操作,都根据操作和内容生成唯一的id,在执行之前先判断id是 ...
- 字符串匹配(BF算法和KMP算法及改进KMP算法)
#include <stdio.h> #include <string.h> #include <stdlib.h> #include<cstring> ...
- 《上传那些事儿之Nest与Koa》——文件格式怎么了!
转载自:juejin - 马睿不想说话 概要 本文主要针对在使用node作为服务端接口时,前端上传上传文件至node作为中转,再次上传至oss/cdn的场景.以及针对在这个过程中,需要对同一个文件进行 ...
- webgl(three.js)3D光伏,3D太阳能能源,3D智慧光伏、光伏发电、清洁能源三维可视化解决方案——第十六课
序: 能源是文明和发展的重要保障,人类命运不可避开的话题,无论是战争还是发展,都有它存在的身影.从石器时代到现代文明,人类的能源应用在进步,也在面临能源枯竭的危机与恐惧,而开发与应用可再生能源才是解决 ...