从新开始学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.

浙公网安备 33010602011771号