字符串是由字符组成的序列。可以使用一对单引号或一对双引号来创建字符串。
使用 + 可以对字符串之间进行首尾连接,中间没有空格。使用 * 可以复制字符串,让字符串重复若干次。
常见转义字符
转义字符 | 含义 |
---|---|
\n | 换行符 |
\t | 横向制表符 |
\0 | 空值 |
\’ | 单引号 ’ |
\" | 双引号 " |
\\ | \ |
空白泛指任何非打印字符,如空格、制表符\t、换行符\n。可以在字符串中添加这些空白,如下。
print('languages:\n\tc\n\tpython\n\tjavascript')
输出结果:
languages:
c
python
javascript
字符串切片
字符串可通过方括号 [] 运算符来获取相应索引位置的字符。
Python有两种索引方式:
(1)正序,n 个字符,从 0 开始到 n-1
(2)逆序,n 个字符,从 -1 开始到 -n
切片共有 3 个参数,用冒号分隔开。第一个参数表示切片开始位置(默认为 0 ),第二个参数表示切片截止位置(但不包含该位置,默认为字符串长度),第三个参数表示切片的步长(默认为 1 )。第三个参数步长可以省略。
s = '0123456789'
print(s[::-1])
print(s[-3:-1])
print(s[-3:])
print(s[:-5])
print(s[:-5:-3]) # 逆序截取
print(s[:-5:-1])
输出结果:
9876543210
78
789
01234
96
9876
字符串方法
作用 | 代码 |
---|---|
删除末尾的所有空白(不能保存到str中,需要关联到str才行,同下) | str.rstrip() |
删除开头的所有空白 | str.lstrip() |
删除开头末尾两边的所有空白(不删中间) | str.strip() |
全部大写 | str.upper() |
全部小写 | str.lower() |
所有单词仅首字母大写 | str.title() |
返回某字符 a 在 str 中出现次数 | str.count(a) |
返回某字符 a 在 str 中的索引值,若 a 不在 str 中则返回 -1 | str.find(a) |
返回某字符 a 在 str 中的索引值,若 a 不在 str 中则报错 | str.index(a) |
以指定字符串 a 作为分隔符,分隔开 s 中所有元素并合并为一个新的字符串,s 可以为字符串或列表等,注意 join 仅接受字符串值! | a.join(s) |
以指定分割符 a 分割字符串,返回列表类型 | str.split(a) |
检查字符串是否以 a 开头,是则返回true,否则返回false。如果beg和end指定值,则在指定范围内检查 | str.startswith(a, beg = 0,end = len(str)) |
如果字符串只包含数字,则返回 True | str.isdigit()或者str.isnumeric() |
如果字符串至少有一个字符,且都是字母,则返回 True | str.isalpha() |
如果字符串至少有一个字符,且都是字母或者数字,则返回 True | str.isalnum() |
'a'.join('bcdfg')
>>>'bacadafag'
'!'.join(['b', 'a', 'p', 'v'])
>>>'b!a!p!v'
one = 'apple pear banana'
one.split(' ') # 按照空格进行分割
>>>['apple', 'pear', 'banana']
two = 'x,y,z,h'
two.split(',') #按照逗号进行分割
>>>['x', 'y', 'z', 'h']
name = ['张伯', '张仲','王五', '张叔', '李四']
for i in name:
if i.startswith('张'):
print(i, end = ' ')
>>>张伯 张仲 张叔
注:split 方法经常在处理文本数据时使用!
在以某分隔符分隔输出时,join 方法的一种应用:
ls = ['2', '20', '200', '2000', '20000']
print(",".join(ls))
>>>2,20,200,2000,20000
但是要注意上面这个列表 ls 的各个值必须为字符串,如果为数字会出错,例如:
ls = [2,20,200,2000,20000]
print(",".join(ls))
>>>TypeError Traceback (most recent call last)
<ipython-input-39-4220d7098a83> in <module>
1 ls = [2,20,200,2000,20000]
----> 2 print(",".join(ls))
TypeError: sequence item 0: expected str instance, int found
字符串函数
函数 | 功能 |
---|---|
ord(str) | 将字符转换为对应的ASCII值 |
chr(str) | 将ASCII值转换为对应的字符 |
len(str) | 返回字符串长度 |
max(str) | 返回字符串中最大的字符 |
min(str) | 返回字符串中最小的字符 |
常用的ASCII值和控制字符转换:
print('ASCII值为179对应的字符为:',chr(179))
print('ASCII值为178对应的字符为:',chr(178))
print('ASCII值为65对应的字符为:',chr(65))
print('ASCII值为97对应的字符为:',chr(97))
>>>ASCII值为179对应的字符为: ³
ASCII值为178对应的字符为: ²
ASCII值为65对应的字符为: A
ASCII值为97对应的字符为: a
len(chr(179))
>>>1
字符串格式化
通用格式:
{ <参数序号> : <格式控制标记> } . format( <逗号分隔的参数> )
其中参数序号表示要对“逗号分隔的参数”中相应位置的参数进行格式化。
格式控制标记的先后顺序为:
1.填充字符,例如*、@、#等
2.对齐方式,<左对齐、>右对齐、^居中对齐
3.宽度,当前槽的设定输出字符宽度
4.千位分隔符(也就是英文逗号,)
5.精度(格式为" .精度 ",小数点开头),对于浮点数,精度表示小数部分输出的有效位数,例如“.2”表示保留两位小数;对于字符串,精度表示输出的最大长度。
6.整数类型/浮点数类型
其中,整数类型有:b二进制,c字符形式(Unicode编码形式),d十进制,o八进制,x小写十六进制,X大写十六进制。
浮点数类型有:e科学计数法(小e形式),E科学计数法(大E形式),f通常形式的小数,%百分数形式
n = 12345
print("{:@>30,}".format(n))
输出结果:
@@@@@@@@@@@@@@@@@@@@@@@@12,345
字符串格式化还有一种简写的格式:
f " { 需要格式化的参数 : 格式控制标记 }"
n = 12345
print(f"{n:@>30,}")
输出结果:
@@@@@@@@@@@@@@@@@@@@@@@@12,345
(两种方式格式化结果都是一样的)
列表转为字符串
方法一:使用 .join() 方法
lis = ['a','b','c','d','e']
s = ''.join(lis)
s2 = ','.join(lis)
print(s)
print(s2)
print(type(s))
print(type(s2))
>>>abcde
a,b,c,d,e
<class 'str'>
<class 'str'>
方法二:结合使用map函数
join()方法仅接受字符串值,因此在将python列表转换为字符串之前,我们使用map()来将这些int值转换为字符串。
lis2 = ['a','b','c','d','e',1, 2, 3]
s3 = ''.join(map(str,lis))
print(s3)
>>>abcde123
方法三:创建空字符串,使用 循环 和 str()
lis2 = ['a','b','c','d','e',1, 2, 3]
new = ''
for i in lis2:
new += str(i)
print(new)
>>>abcde123