从新开始学Python - 字符串扩展3
字符串定义方法
- 单引号
- 双引号
- 三个双引号,例如
"""Python学习"""
- 三个双引号与多行注释相同,也可以支持换行,如果不用变量接受,则为多行注释,如果用变量接受,则为字符串、
引号嵌套(Escape Character)
如果字符串中自带引号,可以用一下方式表明:
- 用转义字符
\
来解除引号效用,例如She said:"I love python!"
可以表示为sentence = "She said:\" I love python!\""
- 单引号中可以带双引号,例如
She said:"I love python!"
可以表示为sentence = 'She said:" I love python!"'
- 双引号中可以带单引号,例如
She said:"I love python!"
可以表示为sentence = "She said:'I love python!'"
字符串拼接
利用+
完成,一般用于字符串和字符串变量之间的拼接
- 例如
name = "hello_world"
print("my name is " + name + ", nice to meet you!"`
# output: my name is hello_world, nice to meet you!
- 直接使用
+
是不能将非字符串直接与字符串进行拼接的
字符串格式化(字符串占位型拼接)
利用%
完成,可以用于所有基本类型的字符串拼接
- 公式
% [(name)] [flag] [width] [.precision] typecode # 顺序严格要求
name
,flag
,width
,.precision
都是前缀- 带
[]
的前缀都可以省略 name
表示变量的名称,在最后用一个字典表示联系,例如:
first_name = "hello"
last_name = "world"
monthly_salary = 10000
print("my first name is %(fs)s, my last name is %(ln)s, and I'm %(ms)s" % ({"fs": first_name, "ln": last_name, "ms": monthly_salary}))
# output: my first name is hello, my last name is world, and my salary is 10000
width
表示输出的内容所占用的宽度- 默认是变量本身的长度
- 用整数表示宽度
- 如果数字
<=
变量本身的长度,则忽略,例如:
full_name = "hello_world" #长度11
monthly_salary = 10000 # 长度5
print("my name is%(fn)11s, and my salary is%(ms)6s" % ({"fn": full_name, "ms": monthly_salary}))
# output: my name ishello_world, and my salary is 10000
flag
表示输出内容的对齐方式- 默认是右对齐
0
是用0填充,且必须是d
或者i
类型的typecode
-
号是左对齐,如果同时有0
和-
,-
会把0
的作用覆盖+
号
full_name = "hello_world"
monthly_salary = 10000
print("my name is%(fn)-15s, and my salary is%(ms)010d." % ({"fn": full_name, "ms": monthly_salary}))
# output: my name ishello_world , and my salary is0000010000.
print("my name is%(fn) s, and my salary is%(ms)010i." % ({"fn": full_name, "ms": monthly_salary}))
# output: my name ishello_world, and my salary is0000010000.
.precision
表示精度- 默认
6
位小数 - 必须是
f
类型的typecode
- 默认
full_name = "hello_world"
monthly_salary = 10000
print("my name is%(fn) 13s, and my salary is%(ms)010.2f." % ({"fn": full_name, "ms": monthly_salary}))
所有的格式符
数值
符号 | 意义 |
---|---|
i /d |
10进制整数 |
u |
python3 里面已废弃不用的格式符,作用与i 或者d 一样 |
o |
8进制整数 |
x /X |
16进制整数 |
e /E |
将整数、浮点数格式化成科学技术法,用e 或者E 表示 |
f /F |
将整数、浮点数格式化成10进制浮点数,默认6位小数点 |
g /G |
将整数、浮点数格式化成浮点数,自动调整,若指数< -4 或者>= .precision ,使用科学技术法;否则使用10进制浮点数 |
字符串
符号 | 意义 |
---|---|
s |
用str() 将任意对象格式化成字符串,或者说获取传入对象的__str__ 方法的返回值 |
r |
用repr() 将任意对象格式化成字符串,或者说获取传入对象的__repr__ 方法的返回值 |
a |
用ascii() 将任意对象格式化成字符串,或者说获取传入对象的__ascii__ 方法的返回值 |
c |
单字符,个位整数或者单个字符 |
特殊
符号 | 意义 |
---|---|
% |
如果要在字符串中表示% ,则需要用%% |
full_name = "hello_world"
monthly_salary = 10000
print("my name is%(fn) 13s, and my salary is%(ms)010.5f%%." % ({"fn": full_name, "ms": monthly_salary}))
# output: my name is hello_world, and my salary is10000.00000%.
字符串快速格式化
利用f
(即format
的缩写)和{}
完成
- 任意类型都可以
- 不做额外的控制,比如精度、排版
- 公式
f"content{variable}"
- 例如
full_name = "hello_world"
monthly_salary = 10000
print(f"my name is {full_name}, and my salary is {monthly_salary}")
# output: my name is hello_world, and my salary is 10000.