从新开始学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 # 顺序严格要求
  • nameflagwidth.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.
posted @ 2022-11-14 19:25  重生之开局就学写代码  阅读(33)  评论(0编辑  收藏  举报