寒假冲刺之Python字符串基础回顾

2023-05-16

录🦌

  • 🕐什么是字符串
  • 🕑基础知识
  • 🕔拼接字符串
  • 🕖字符串索引
  • 🕘字符串切片(重)
  • 🕚printf风格的字符串格式化
  • 🕛字符串常见的方法

🕐什么是字符串

字符串是由 Unicode 码位构成的不可变 序列。

🕑基础知识

1、字符串有多种表现形式,用单引号('……')或双引号("……")标注的结果相同。反斜杠 \ 用于转义

交互式解释器会为输出的字符串加注引号,特殊字符使用反斜杠转义。虽然,有时输出的字符串看起来与输入的字符串不一样(外加的引号可能会改变),但两个字符串是相同的。如果字符串中有单引号而没有双引号,该字符串外将加注双引号反之,则加注单引号print() 函数输出的内容更简洁易读,它会省略两边的引号,并输出转义后的特殊字符

>>> 'spam eggs'  # single quotes
'spam eggs'
>>> 'doesn\'t'  # use \' to escape the single quote...
"doesn't"
>>> "doesn't"  # ...or use double quotes instead
"doesn't"
>>> '"Yes," they said.'
'"Yes," they said.'
>>> "\"Yes,\" they said." #只有双引号没有单引号,加注单引号
'"Yes," they said.'
>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'
>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'
>>> print('"Isn\'t," they said.')#省略两边的引号
"Isn't," they said.

2、如果不希望前置 \ 的字符转义成特殊字符,可以使用 原始字符串,在引号前添加 r 即可,就比如在输出“文件目录”的时候

>>> print('C:\some\name')  # here \n means newline!
C:\some
ame
>>> print(r'C:\some\name')  # note the r before the quote
C:\some\name

3、字符串字面值可以实现跨行连续输入。实现方式是用三引号:"""..."""'''...''',字符串行尾会自动加上回车换行,如果不需要回车换行,在行尾添加 \ 即可。

print("""\
Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to
""")
Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to

(注意,第一行没有换行)

🕔拼接字符串

1、字符串可以用 + 合并(粘到一起),也可以用 * 重复

>>> # 3 times 'un', followed by 'ium'
>>> 3 * 'un' + 'ium'
'unununium'

2、相邻的两个或多个 字符串字面值 (引号标注的字符)会自动合并,拆分长字符串时,这个功能特别实用

>>> 'Py' 'thon'
'Python
'>>> text = ('Put several strings within parentheses ' 'to have them joined together.')
>>> text
'Put several strings within parentheses to have them joined together.'

这项功能只能用于两个字面值,不能用于变量或表达式

3、合并多个变量,或合并变量与字面值,要用 +

>>> a='py'
>>> a+'thon'
'python'

🕖字符串索引

字符串支持 索引 (下标访问),第一个字符的索引是 0。单字符没有专用的类型,就是长度为一的字符串,索引还支持负数,用负数索引时,从右边开始计数,注意:从右边开始计数,第一个下标索引是-1,不是-0,-0和0指的字符是相同的!

>>> word = 'Python'
>>> word[0]
'P'
>>> word[-1]
'n'
>>> word[-0]
'P'

🕘字符串切片(重)

索引可以提取单个字符,切片 则提取子字符串

切片索引的默认值很有用;省略开始索引时,默认值为 0,省略结束索引时,默认为到字符串的结尾

>>> word = 'Python'
>>> word[:2]  #不包括2,和word[0:2]等价
'Py'
>>> word[4:]  #包括4
'on'

注意,输出结果包含切片开始,但不包含切片结束。因此,s[:i] + s[i:] 总是等于 s

>>> word[:2] + word[2:]
'Python'
>>> word[:4] + word[4:]
'Python'

对于使用非负索引的切片,如果两个索引都不越界,切片长度就是起止索引之差

>>> word[2:5]
'tho'

索引越界会报错:

>>> word[42]  # the word only has 6 characters
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

但是,切片会自动处理越界索引:

>>> word[4:42]
'on'
>>> word[42:]
''

Python 字符串不能修改,是 immutable 的。因此,为字符串中某个索引位置赋值会报错:

报错信息:TypeError: ‘str’ object does not support item assignment

要生成不同的字符串,应新建一个字符串,使用“+”进行合并

内置函数 len() 返回字符串的长度:

>>> len(word)
6

🕚printf风格的字符串格式化

字符串具有一种特殊的内置操作:使用 % (取模) 运算符。 这也被称为字符串的 格式化插值 运算符。对于 format % values (其中 format 为一个字符串),在 format 中的 % 转换标记符将被替换为零个或多个 values 条目。 其效果类似于在 C 语言中使用 sprintf()

🕛字符串常见的方法

1、str.find(sub[, start[, end]])

返回子字符串 subs[start:end] 切片内被找到的最小索引。 可选参数 startend 会被解读为切片表示法,此函数返回在切片 s [start:end]中找到子字符串“ sub”的字符串中的最低索引。 如果 sub 未被找到则返回 -1

>>> print(word.find('P'))
0
>>> print(word.find('Py', 0,3))
0

find() 方法应该只在你需要知道 sub 所在位置时使用。 要检查 sub 是否为子字符串,请使用 in 操作符:

>>> 'Py' in 'Python'
True

2、str.format(*args, **kwargs)

执行字符串格式化操作。 调用此方法的字符串可以包含字符串字面值或者以花括号 {} 括起来的替换域。 每个替换域可以包含一个位置参数的数字索引,或者一个关键字参数的名称。 返回的字符串副本中每个替换域都会被替换为对应参数的字符串值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

寒假冲刺之Python字符串基础回顾 的相关文章

随机推荐