我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【Python3】f-string——s

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【Python3】f-string——s

文章目录

  • 1. 基本用法
  • 2. f-string的一些细节
    • 2.1 引号
    • 2.2 大括号
    • 2.3 反斜杠
    • 2.4 多行f-string
  • 3. 格式化
    • 3.1 类型
    • 3.2 对齐与填充
    • 3.3 符号位和前缀:针对数值,用于字符串会报错
    • 3.4 最小宽度
    • 3.5 精度
    • 3.6 千位分隔符
  • 4. 日期时间的格式化
    • 4.1 格式化符号
    • 4.2 examples
  • 5. 使用lambda表达式
  • 6. f-string与对象


        f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,主要目的是使格式化字符串的操作更加简便。f-string在形式上是以 f 或 F 修饰符引领的字符串(f’xxx’F’xxx’),以大括号{}标明被替换的字段。f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。
        f-string在功能方面不逊于传统的%-formatting语句和str.format()函数,同时性能又优于二者,且使用起来也更加简洁明了,因此对于Python3.6及以后的版本,推荐使用f-string进行字符串格式化。

        f-string是字符串前加“f”或者“F”,然后字符串内“{}”就有特殊意义了,里面填写变量名,运行时自动计算这个变量的值,代入字符串内输出。
        反正一句话,不涉及格式化问题,就是在f-string中的大括号填写一句可执行的Python语句,运行时把它执行得到的值,替换这一个“{}”块。

name = "sky"
age = 18
print(f"My name is {name}, age is {age}.")
# 输出:My name is sky, age is 18.

fruits = {"apple":"red","banana":"yellow"}
s = F"The apple is {fruits['apple']},the banana is {fruits['banana']}"	
# f-string内的引号和整体的外部引号不能一致,否则会解析错误
print(s)
# 输出:The apple is red,the banana is yellow

s = "I love U"
print(f"the reverse is '{s[::-1]}'")
# 输出:the reverse is 'U evol I'
# 逆置还可以:"".join(reversed(s))

2.1 引号

        有时候在大括号内写表达式的时候回用到引号,但是,大括号本身就是在f-string的引号内,如果是同样的引号的话,显然会造成解析错误的,所以应当注意,内部引号和边界引号一定不能相同,这样就能正常运行。

2.2 大括号

        f-string中,大括号是有特殊含义的,它包裹的是可执行的语句,但是如果我们需要用到大括号怎么办呢?我们参照下面的例子:

print(f"the set is {{1}}")					# 'the set is {1}'
print(f"{{{6}}}")							# '{6}',这里表达式是整数6
print(f"{{{{6}}}}")							# '{{6}}',这里表达式是集合{6}

2.3 反斜杠

        这就涉及到转义的问题。在大括号外面仍然可以用反斜杠进行转义,大括号内部不允许出现反斜杠!若一定要用则应该把它赋值给变量,再通过变量传到大括号内。

2.4 多行f-string

s = f"ADC" \
    f"SUP"
r = f"""red
    blue"""

        显然,三引号写法不必每行前加f/F标识f-string

        f-string采用 {content:format} 设置字符串格式,其中 content 是替换并填入字符串的内容,可以是变量、表达式或函数等,format 是格式描述符。采用默认格式时不必指定 {:format},如上面例子所示只写 {content} 即可。
        语法:{[content]:[填充字符][对齐][符号位][前缀][最小宽度][千位分隔符][.精度][类型]}

3.1 类型

符号 示例 结果 含义
d f"age = ({26:4d})" ‘age = ( 26)’ 整数
f f"{3.1415:.2f}" ‘3.14’ 浮点数
F f"{math.nan:F}" ‘NAN’ inf,nan等转换为大写
% f"{0.024937:.2%}" ‘2.49%’ 百分比格式
E/e f"{314.15:.2e}" ‘3.14e+02’ 科学计数法
s f"age = ({‘26’:4s})" ‘age = (26 )’ 字符串
b f"{36:b}" ‘100100’ 二进制整数
o f"{36:o}" ‘44’ 八进制整数
X/x f"{36:x}" ‘24’ 十六进制整数

3.2 对齐与填充

符号 含义
^ 居中
< 左对齐
> 右对齐

        对齐符号左边是填充字符,注意:只能是一个字符!不写默认是空格填充
        有填充字符必须有对齐符号,不然中间丢失对其符号会报错!
        默认,字符串左对齐,数值右对齐

3.3 符号位和前缀:针对数值,用于字符串会报错

符号 含义
+ 显示正负号
- 负数显示负号,正数不显示
空格 整数显示空格,负数显示负号
# 仅用于显示前缀,如八进制、十六进制整数

3.4 最小宽度

        格式化后,该段格式化后整体的最小长度,不足长度会填充填充字符,如果替换的内容长度超过设定的最小长度,以实际长度为准。

3.5 精度

        作用于字符串时,是输出字符串的个数,作用于整数时报错,作用于浮点数时,表示输出小数位数,科学计数法表示的是底数的小数位数,默认6位小数。
        目前试验看来是四舍五入。

3.6 千位分隔符

        逗号或下划线,只作用于数值

>>> f"{1234356789.123456:^#20_.4f}"
' 1_234_356_789.1235 '
>>> f"{1234356789.123456:^#20,.4f}"
' 1,234,356,789.1235 

4.1 格式化符号

        格式字符太多,以下给出经常用得到的格式字符表示:

符号 含义 示例
%y 两位数的年份表示 99
%Y 四位数的年份表示 2019
%m 月份 12
%d 一个月的第几天 31
%F 返回年月日(-连接) 2019-05-22
%D 返回日月年(/连接) 05/22/19
%b 本地简化月份名称 Aug
%B 本地完整月份名称 August
%a 本地简化星期名称 Mon
%A 本地完整星期时间 Monday
%j 一年中的第几天 001-366
%p 本地a.m.和p.m. AM/PM
%H 24小时制 23
%I 12小时制 05
%M 分钟,补足2位 09
%S 秒,补足2位 59
%f 微秒,补足6位 553777
%x 本地相应的日期表示 08/15/20
%X 本地相应的时间表示 00:00:00
%% 百分号 %

4.2 examples

import datetime
d = datetime.datetime.now()

s = f"{d:%Y-%m-%d %A %p %H:%M:%S.%f}"
print(s)										# 2019-05-22 Wednesday PM 17:13:18.393931

s = f"{d:%F}"
print(s)										# 2019-05-22
s = f"{d:%D}"
print(s)										# 05/22/19

s = f"{d:%d %b %Y}"
print(s)										# 22 May 2019

s = f"{d:%X}"
print(s)										# 17:15:47

        f-string大括号内也可填入lambda表达式,但lambda表达式的 : 会被f-string误认为是表达式与格式描述符之间的分隔符,为避免歧义,需要将lambda表达式置于括号()内:

l = [1,2,3,4,5]
s = f"求列表每个数的平方:{(lambda x: [y*y for y in x])(l)}"
print(s)	# 求列表每个数的平方:[1, 4, 9, 16, 25]

        _str __()__repr __()方法处理对象如何呈现为字符串,因此您需要确保在类定义中包含至少一个这些方法。如果必须选择一个,请使用__repr __(),因为它可以代替__str __()。
        __str __()返回的字符串是对象的非正式字符串表示,应该可读。__repr __()返回的字符串是官方表示,应该是明确的。调用str()repr()比直接使用__str __()__repr __()更好。
        默认情况下,f字符串将使用__str __()方法,但如果包含转换标志!r,则可以确保它们使用__repr __()方法。

class Person(object):
    def __init__(self,name,age):
        self.__name = name
        self.__age = age
    def __str__(self):
        return f"我的名字是 {self.__name} ,今年 {self.__age} 岁了!"
    def __repr__(self):
        return f"我的名字是 {self.__name} ,今年 {self.__age} 岁了! Superise!"

p = Person("易",18)
print(f"{p}")							# 我的名字是 易 ,今年 18 岁了!
print(f"{p!r}")							# 我的名字是 易 ,今年 18 岁了! Superise!

【Python3】f-string——s

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【Python3】f-string——s

文章目录1. 基本用法2. f-string的一些细节2.1 引号2.2 大括号2.3 反斜杠2.4 多行f-string3. 格式化3.1 类型3.2 对齐与填充3.3 符号位和前缀:针对数值,用于字符串会报错3.4 最小宽度3.5 精度
2023-01-31

python3 selenium + f

一、 分析:抓取动态页面js加载的人民日报里面的新闻详情 https://wap.peopleapp.com/news/1先打开,然后查看网页源码,发现是一堆js,并没有具体的每个新闻的url详情,于是第一反应,肯定是js动态加载拼接的u
2023-01-31

Python之%s%d%f

%s 字符串string="hello" #%s打印时结果是hello print ("string=%s" % string) # output: string=hello #%2s意思是字符串
2023-01-31

Python3 上 bytes 和 s

最近学 Python,在 coursera 上上 Programming for Everybody (Getting Started with Python) 这门课,就顺藤摸瓜地读了 python for informatics 这本书
2023-01-31

centos7中python3环境支持s

在centos7环境中常规安装python3的话无法支持sqlite3和ssl,所以在安装pytho3是需要带上sqlite3库和ssl库: 下载编译安装sqlite3: # wget https://www.sqlite.org
2023-01-31

Python中str.format()和f-string的使用

本文主要介绍了Python中str.format()和f-string的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-27

ORA-14521: Default tablespace string block size [string] for string string does not match existing s

文档解释ORA-14521: Default tablespace string block size [string] for string string does not match existing string block
ORA-14521: Default tablespace string block size [string] for string string does not match existing s
2023-11-04

python3怎么用f-strings格式化字符串

这篇文章将为大家详细讲解有关python3怎么用f-strings格式化字符串,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。用f-strings格式化字符串(Python 3.6+)这是自Python
2023-06-27

ORA-26923: cannot configure string outbound server “string” with string capture “s

文档解释ORA-26923: cannot configure string outbound server string with string capture string due to different
ORA-26923: cannot configure string outbound server “string” with string capture “s
2023-11-05

Python中str.format()和f-string如何使用

这篇文章主要介绍“Python中str.format()和f-string如何使用”,在日常操作中,相信很多人在Python中str.format()和f-string如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
2023-07-05

python3-文件的修改——实现类似s

# Auther: Aaron Fan'''打开文件的模式有三种:r,只读模式(默认)。w,只写模式。【不可读;不存在则创建;存在则删除内容;因为会清空原有文件的内容,一定要慎用】a,追加模式。【可读;   不存在则创建;存在则只追加内容;
2023-01-31

python3中bytes与string

首先来设置一个原始的字符串,Python 3.2.3 (default, Apr 11 2012, 07:15:24) [MSC v.1500 32 bit (Intel)] on win32Type "help", "copyright"
2023-01-31

Python格式化字符串f-string简介

f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,这篇文章主要介绍了Python格式化字符串f-string概览,需要的朋友可以参考下
2022-12-19

ORA-23487: object groups “string”.”string” and “string”.”s

文档解释ORA-23487: object groups string.string and string.string do not have the same connection qualifierCause:
ORA-23487: object groups “string”.”string” and “string”.”s
2023-11-05

String s = new String("xyz")创建了几个对象

本篇内容主要讲解“String s = new String("xyz")创建了几个对象”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“String s = new String("xyz")创建
2023-06-16

Python3中byte和string之

设置字符串base_str = "我已经将我的狗狗送人了"print(type(base_str))按照utf-8的格式转出bytesbytes_utf_8 = base_str.encode(encoding="utf-8")print(
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录