Python3 字符串

一、基本定义

  • String(字符串)是 Python 中表示 文本 的数据类型
  • 字符串用单引号 '' 或双引号 "" 括起来,也可以同时使用反斜杠 \ 转义特殊字符

二、访问字符串中的值

  • 不支持 单字符类型,单字符也是作为 一个 字符串使用
  • 访问子字符串,可以使用 方括号 [] 来截取 字符串
  • 两种 索引方式,从左往右以 0 开始,从右往左以 -1 开始
  • 截取格式:变量[头下标:尾下标:步长]
str = "Hello Python"

# 切片格式:[start:end:step]
# 当 start 不输入则默认为 0,当 end 不输入默认为长度
# 当 step > 0,顺序遍历, 当 step < 0,逆着遍历
print(str[0])
print(str[-2])
print(str[1:])
print(str[:5])
print(str[1:5])
print(str[0:6:2])
print(str[-1::-1])
print(str[::-1])
-> 1
-> 6
-> 234567
-> 12345
-> 2345
-> 135
-> 7654321
-> 7654321

三、字符串更新

  • 字符串 不能 改变,但可以截取一部分并与其他字段 拼接
str = "Hello World!"
print(str[:6] + "Python!")
-> Hello Python!

四、转义字符

序号符号描述
01\续行符 (行尾)
02\\反斜杠
03\'单引号
04\"双引号
05\a响铃
06\b退格
07\e转义
08\0空字符
09\n换行
10\v纵向制表符
11\t横向制表符
12\r回车
13\f换页
14\oyy八进制数,yy 代表字符,\o12 -> \n
15\xyy十六进制数,yy 代表字符,\x0a -> \n
16\other其它的字符以普通格式输出

五、字符串运算符

序号符号描述
01+连接 字符串
02*重复 字符串
03[]通过索引 获取 子字符
04[:]截取 字符串中的一部分,遵循 左闭右开 原则
05in字符串中 包含 给定的字符返回 True ,否则返回 False
06not in字符串中 不包含 给定的字符返回 True ,否则返回 False
07r/R原始字符串 (raw string)print(r"Hello\nPython!") -> Hello\nPython!
08u16位Unicode字符串,print(u"Unicode字符串") -> Unicode字符串
09%格式字符串

Explain:

  • Python 2.x 中,普通字符串是以 8位ASCII码 进行存储的,若要改为 16位unicode字符串 进行存储,只需在字符串前面加上前缀 u 即可
  • Python 3.x 中,所有字符串都是 16位Unicode字符串 ,这样能够表示更多的字符集

六、字符串格式化

序号符号描述
01%c格式化字符及其 ASCII码
02%s格式化 字符串
03%d格式化 整数
04%u格式化 无符号整型
05%o格式化 无符号八进制数
06%x格式化 无符号十六进制数
07%X格式化 无符号十六进制数
08%f格式化 浮点数 ,可指定小数点后的 精度
09%e科学计数法 格式化浮点数
10%E科学计数法 格式化浮点数
11%g%f%e 的简写
12%G%f%E 的简写
13%p用十六进制数格式化 变量地址
序号符号描述实例
01*定义宽度或者小数点精度
02-在较长宽度数字 左对齐print("%-10f" % 3.14159) -> 3.141590
03+在正数前面显示 加号print("%+.2f" % 3.14159) -> +3.14
04<sp>在正数前面显示空格
05#八/十六进制数 前面显示 '0'print("%#x" % 0o22) -> 0x12
060在较长宽度数字 前后面 填充 '0'print("%010f" % 3.14159) -> 003.141590
07%输出一个单一的 '%'print("%.2f%%" % 3.14159) -> 3.14%
08(VAR)映射变量 (字典参数)
09m.nm 最小总宽度,n 小数点后的位数print("%10.2f" % 3.14159) -> 3.14

七、三引号

  • 允许一个字符串 跨多行 ,字符串中可以包含换行符、制表符以及其他特殊字符
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print(para_str)
-> 这是一个多行字符串的实例
-> 多行字符串可以使用制表符
-> TAB (    )-> 也可以使用换行符 [ 
->  ]

八、字符串格式化函数

序号函数描述
01str.format(*args, **kwargs)执行字符串 增强型格式化 操作,替换字段使用 {} OR : 分隔
02str.format_map(mapping)执行字符串 增强型格式化 操作,替换字段使用 {} 分隔
序号数字格式化实例描述
01print("{:.2f}".format(3.14159)) -> 3.14保留小数点后 两位
02print("{:+.2f}".format(3.14159)) -> +3.14带符号 保留小数点后两位
03print("{:+.2f}".format(-1)) -> -1.00带符号 保留小数点后两位
04print("{:.0f}".format(2.71828)) -> 3不带小数
05print("{:0>2d}".format(5)) -> 05数字补 0 (填充左边, 宽度为 2 )
06print("{:x<4d}".format(5)) -> 5xxx数字补 x (填充右边, 宽度为 4 )
07print(" {:x<4d}".format(10)) -> 10xx数字补 x (填充右边, 宽度为 4 )
08print("{:,}".format(1000000)) -> 1,000,000逗号分隔 的数字格式
09print("{:.2%}".format(0.25)) -> 25.00%百分比 格式
10print("{:.2e}".format(1000000000)) -> 1.00e+09指数 记法
11print("{:>10d}".format(14)) -> 14右对齐 (默认, 宽度为 10 )
12print("{:<10d}".format(14)) -> 14左对齐 (默认, 宽度为 10 )
13print("{:^10d}".format(14)) -> 14居中 (默认, 宽度为 10 )
14print("{:b}".format(11)) -> 1011 进制
15print("{:d}".format(11)) -> 11 进制
16print("{:o}".format(11)) -> 13 进制
17print("{:x}".format(11)) -> b十六 进制
18print("{:#x}".format(11)) -> 0xb十六 进制
19print("{:#X}".format(11)) -> 0XB十六 进制
20print("{} = {{0}}".format("index")) -> index = {0}转义 大括号
# 按默认顺序
print("{} {}".format("Hello", "World"))

# 设置指定位置
print("{0} {1}".format("Hello", "World"))

# 设置指定位置
print("{1} {0} {1}".format("Hello", "World"))

# 设置变量代入
print("网站名:{name}, 地址:{url}".format(name="谷歌", url="www.google.com"))

# 通过字典设置参数
site1 = {"name": "谷歌", "url": "www.google.com"}
print("网站名:{name}, 地址:{url}".format(**site1))

# 通过元祖索引设置参数
site2 = ("谷歌", "www.google.com")
print("网站名:{0}, 地址:{1}".format(*site2))

# 通过列表索引设置参数
my_list1 = ["淘宝", "www.taobao.com"]
my_list2 = ["谷歌", "www.google.com"]
print("网站名:{0[0]}, 地址:{0[1]}".format(my_list1, my_list2))
print("网站名:{1[0]}, 地址:{1[1]}".format(my_list1, my_list2))
-> Hello World
-> Hello World
-> World Hello World
-> 网站名:谷歌, 地址:www.google.com
-> 网站名:谷歌, 地址:www.google.com
-> 网站名:谷歌, 地址:www.google.com
-> 网站名:淘宝, 地址:www.taobao.com
-> 网站名:谷歌, 地址:www.google.com

九、字符串函数与方法

序号函数描述
01len(str)返回 字符串 个数
02max(str)返回 字符串 最大值
03min(str)返回 字符串 最小值
03str(obj)返回 适于人阅读的 字符串形式
序号去除空白字符描述
01str.lstrip([chars])返回 移除字符串 左边 的空格或指定字符后生成的新字符串
02str.rstrip([chars])返回 移除字符串 右边 的空格或指定字符后生成的新字符串
03str.strip([chars])返回 移除字符串 头尾 指定的字符序列生成的新字符串
序号文本对齐描述
01str.center(width [,fillchar])返回 一个指定宽度 居中 的字符串,小于字符串宽度则使用指定字符填充
02str.ljust(width [,fillchar])返回 一个指定宽度 左对齐 的字符串,小于字符串宽度则使用指定字符填充
03str.rjust(width [,fillchar])返回 一个指定宽度 右对齐 的字符串,小于字符串宽度则使用指定字符填充
04str.zfill(width)返回指定长度的字符串,原字符串 右对齐,默认填充 '0'
序号拆分连接描述
01str.join(seq)返回 通过指定字符 连接序列中元素 后生成的新字符串
02str.partition(string="")返回 一个 三元 的元组 (左子字符串,分隔符本身,右子字符串)
03str.rpartition(string="")返回 一个 三元 的元组 (左子字符串,分隔符本身,右子字符串)
04str.split(string="", num=str.count(string))返回 一个 分割 后的字符串列表
05str.splitlines([keepends])返回 一个 保留换行符 的列表,默认为 False
序号大小写转换描述
01str.capitalize()返回 一个 首字母大写 的新字符串
02str.casefold()返回 将字符串中 所有大写字符转换为小写 后生成的新字符串 (其他语言)
03str.lower()返回 将字符串中 所有大写字符转换为小写 后生成的新字符串 (汉英语言)
04str.swapcase()返回 大小写字母转换 后生成的新字符串
05str.title()返回 所有单词的 首字母都转化为大写 的新字符串
06str.upper()返回 将字符串中 所有小写字符转换为大写 后生成的新字符串 (汉英语言)
序号判断类型描述
01str.isalnum()判断 字符串是否 都由字母 (至少一个) 和数字组成 ,若是返回 True,否则返回 False
02str.isalpha()判断 字符串是否 都由字母 (至少一个)组成 ,若是返回 True,否则返回 False
03str.isdecimal()判断 字符串是否 只包含十进制字符 (针对Unicode对象) ,若是返回 True,否则返回 False
04str.isdigit()判断 字符串是否 只由数字组成 ,若是返回 True,否则返回 False
05str.isidentifier()判断 字符串是否是 有效的标识符 ,若是返回 True,否则返回 False
06str.islower()判断 字符串中 所有的字母 是否都为 小写,若是返回 True,否则返回 False
07str.isnumeric()判断 字符串是否 只由数字组成 (针对Unicode对象) ,若是返回 True,否则返回 False
08str.isprintable()判断 字符串是否 可打印 的,若是返回 True,否则返回 False
09str.isspace()判断 字符串是否 只由空白字符组成 ,若是返回 True,否则返回 False
10str.istitle()判断 字符串中 所有的单词 拼写 首字母是否为大写,且其他字母为小写 ,若是返回 True,否则返回 False
11str.isupper()判断 字符串中 所有的字母 是否都为 大写 ,若是返回 True,否则返回 False
序号查找替换描述
01str.count(string, start=0, end=len(str))返回 子字符串在字符串中出现的 次数
02str.encode(encoding='UTF-8', errors='strict')返回 编码后的字符串,它是一个 bytes 对象
03str.endswith(suffix, start=0, end=len(str))检测 字符串是否 以指定后缀结尾 ,若是返回 True ,否则返回 False
04str.expandtabs(tabsize=8)返回 字符串中的 \t 转为空格 后生成的新字符串
05str.find(string, start=0, end=len(str))检测 字符串中是否 包含子字符串,若是返回索引值,否则返回 -1
06str.index(string, start=0, end=len(str))检测 字符串中是否 包含子字符串,若是返回索引值,否则抛出异常
07str.replace(oldStrinig, newString, num=str.count(oldString))返回 字符串中的 旧字符串替换成新字符串 后生成的新字符串
08str.rfind(string, start=0, end=len(str))返回 字符串 最后一次出现的位置 ,若是没有匹配项,否则返回 -1
09str.rindex(string, start=0, end=len(str))返回 字符串 最后一次出现的位置 ,若是没有匹配项,否则返回抛出异常
10str.startswith(suffix, start=0, end=len(str))检测 字符串是否 以指定后缀开头 ,若是返回 True,否则返回 False
11str.maketrans(intab, outtab, deltab)返回 字符串 映射 后生成的新字符串
12str.translate(table)返回 翻译后的新字符串,翻译表是通过 str.maketrans() 方法转换而来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值