录🦌
- 🕐什么是字符串
- 🕑基础知识
- 🕔拼接字符串
- 🕖字符串索引
- 🕘字符串切片(重)
- 🕚printf风格的字符串格式化
- 🕛字符串常见的方法
🕐什么是字符串
字符串是由 Unicode 码位构成的不可变 序列。
🕑基础知识
1、字符串有多种表现形式,用单引号('……'
)或双引号("……"
)标注的结果相同。反斜杠 \
用于转义
交互式解释器会为输出的字符串加注引号,特殊字符使用反斜杠转义。虽然,有时输出的字符串看起来与输入的字符串不一样(外加的引号可能会改变),但两个字符串是相同的。如果字符串中有单引号而没有双引号,该字符串外将加注双引号,反之,则加注单引号。print()
函数输出的内容更简洁易读,它会省略两边的引号,并输出转义后的特殊字符
>>> 'spam eggs'
'spam eggs'
>>> 'doesn\'t'
"doesn't"
>>> "doesn't"
"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')
C:\some
ame
>>> print(r'C:\some\name')
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 * '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]
'Py'
>>> word[4:]
'on'
注意,输出结果包含切片开始,但不包含切片结束。因此,s[:i] + s[i:]
总是等于 s
>>> word[:2] + word[2:]
'Python'
>>> word[:4] + word[4:]
'Python'
对于使用非负索引的切片,如果两个索引都不越界,切片长度就是起止索引之差。
>>> word[2:5]
'tho'
索引越界会报错:
>>> word[42]
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]])
返回子字符串 sub 在 s[start:end]
切片内被找到的最小索引。 可选参数 start 与 end 会被解读为切片表示法,此函数返回在切片 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(使用前将#替换为@)