【 Python数据结构 | 字符串速通 】六个知识点快速讲懂 str 语法使用与常见字符集拒绝废话水文

by.csdn Qin3Yu


1. 字符串的分割方法

  • 字符串最常用的即为分割方法,在字符串后写一个 [] ,填入参数,即可分割字符串,其语法如下,将字符串 sfirstIndexlastIndex-1 区间内(即 [firstIndex,lastIndex) 区间内)的字符串返回,step 为步长,可通俗理解为“每 step 个取一个”,其中 firstIndex 默认为 0lastIndex 默认为 len(s)step 默认为 1
s2 = s1[firstIndex:lastIndex:step]
s3 = '0123456789'
s4 = s3[1:7:2]
# s4 = '135'
  • 同时,firstIndex 也可以大于 lastIndex ,此时 step 必须 <0不再默认 ,代表从后向前 反向分割 字符串:
s1 = '0123456789'
s2 = s1[7:2:-1]
# s2 = '76543'
  • firstIndexlastIndex 也可以为负数,称为字符串的 负索引 ,字符串最后一位的负索引为 -1 ,最前一位的负索引即为 -len(s),同样也可用于分割字符串,此方法通常用于 获取不确定长度字符串的最后几位

s1 = '0123456789'
s2 = s1[-5:-2]
# s2 = '567'
  • 利用 firstIndexlastIndex 的默认值,我们可以快速地 反转字符串 ,此方法非常常用:
s = s[::-1]

2. 字符串的常用方法

  • 字符串有以下几种常用的方法,下表中用 s 代表字符串,c 代表其中字符,n 代表整型常量,lis 表示列表:
方法说明有返回
len(s)返回 s 的长度
s1.startswith(s2)判断 s1 是否以 s2 开头
s1.endswith(s2)判断 s1 是否以 s2 结尾
s.isdigit()判断 s 中的字符是否全为数字
s.strip()移除 s 前后的所有空格并返回
s.find(c)返回 sc 的下标
s.count(c)返回 sc 的数量
s.replace(c1, c2)s 中的所有 c1 替换为 c2 并返回
  • 以下几种方法虽不常见,但也偶尔会使用:
方法说明有返回
s.upper()s 中的所有字母大写并返回
s.lower()s 中的所有字母小写并返回
s.rstrip(c)去除 s 末尾的所有 c 并返回,默认为空格
s.index(c)返回 sc 的下标
s.join(lis)lis 中的元素以 s 相连后返回
s.split(c)sc 分割为列表并返回
s.zfill(n)s 前填充 0 ,使长度为 n 并返回
s.rjust(n,c)s 前填充 c ,使长度为 n 并返回,c 默认为空格
s.ljust(n,c)s 后填充 c ,使长度为 n 并返回,c 默认为空格
s.center(n,c)s 前后填充 c ,使长度为 n 并返回,c 默认为空格

特别说明: .find() 方法与 .index() 的区别在于前者如果没有找到指定字符则会返回 -1 ,而后者则会引发 ValueError 异常。


3. 常见字符集

  • 字符集可以看作是一种常量字符串,诣在 简化代码 ,增强可读性,string 模块中有以下8个常见的字符集,其中前3个最为常用:
字符集说明包含字符
string.digits包含所有数字0123456789
string.ascii_lowercase包含所有小写字母abc...xyz
string.ascii_uppercase包含所有大写字母ABC...XYZ
string.ascii_letters包含所有字母abc...XYZ
string.hexdigits包含所有数字和字母012...abc...DEF
string.octdigits包含八进制字符01234567
string.punctuation包含所有标点符号'!"#$%&\'()*+,-./:;<=>?@[\\]^_{|}~'
string.whitespace包含所有空白字符\t\n\r\x0b\x0c

特别说明: 使用前请先导入 string 模块。


4. 字符串的构造方法

  • 字符串提供一个 str() 构造方法,其可接受几乎所有数据类型,并将其 转换为字符串
s = str(648)
# s = '648'

特别说明: 大多数人会认为可以使用 str() 方法将列表构造为字符串,实际上的输出可能会与预计产生偏差,这是因为 str() 会将值按照 print()打印格式构造 为字符串,例如:

lis = ['A', 'B', 'C']
s = str(lis)
# s = '['A', 'B', 'C']'
  • 所以在大多数情况下,我们通常使用 .join() 方法,使用空字符 '' 做连接,对列表做出转换:
lis = ['A', 'B', 'C']
s = ''.join(lis)
# s = 'ABC'
  • eval() 方法可以快速地将字符串转换为数值,其接受一个字符串 s ,如果 s表达一个数值的字符串 ,则会返回 其表达的数值 ,否则会根据具体情况引发各种 Error 异常,此方法非常常用:
s = '4+6+5*2+3'
n = eval(s)
# n = 23

5. 字符串格式化

  • 字符串大多数时使用前导 f.format() 方法格式化,前者比后者更为常用。前导 f 即在字符串前面添加一个字符 f ,即可在字符串中使用 {name} 来代替变量:
name = 'Asaka'
age = 18
s = f'I'm {name}, {age} years old.'
  • .format() 有很多用法,但是常见的只有以下三个。

  • 在字符串中使用 {} 进行占位,每一个 {} 将会对应 .format() 中的每一个参数,依次填充 进字符串:

s = 'I'm {}, {} years old'.format(name, age)
  • 也可以提前在字符串的 {} 中指定 name ,在 .format() 方法中将 name 传入,则会 按变量名填充 进字符串,此时 .format() 中的参数可以不按 s 中的顺序输入:
s = 'I'm {name}, {age} years old'.format(age, name)
  • 还可以在字符串的 {} 中填入下标形式的数字,此时则会将 .format() 方法中的参数 按下标填充 进字符串,此方法常用于 一个参数要多次输入 的情况:
s = '{0}, {0}, {0}{0}{0},My hair is {1}'.format('hello', 'true')

6. 字符串特殊注意事项

  • Python 中,字符串是 不可变数据类型 ,如果使用下标修改字符串元素,则会引发 TypeError 异常,如果需要修改字符串,通常的方法是先用 list() 方法构造为列表,修改后再用 .join() 方法构造为字符串。

  • 对于拼接字符串,使用 + 效率将会比使用 .join>() 方法效率低下,因此在拼接大量字符串时建议使用 .join() 方法。


thanks
by.csdn Qin3Yu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qin3Yu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值