Samxander's home

You shall see the difference now that we are back again!

0%

Python学习:字符串

字符串的索引与切片

  • 字符串的索引访问

Python语言中的字符串包括两种符号体系:正向递增序号和反向递减序号。

如下图所示:

1
2
3
4
5
6
7
8
9
>>> s='Hello World'
>>> s[0]
'H'
>>> s[-1]
'd'
>>> s[8]
'r'
>>> s[-3]
'r'

  • 字符串的切片访问

具体语法格式为: [头下标:尾下标] ,这种访问方式称之为“切片”。但注意,这是左闭右开的区间。在切片方式中,若头下标缺省,表示从字符串的开始取子串;若尾下标缺省,表示取到字符串的最后一个字符;若头下标和尾下标都缺省,则取整个字符串。

示例:

1
2
3
4
5
6
7
8
9
10
11
>>> s='Hello Mike'
>>> s[0:5]
'Hello'
>>> s[6:-1]
'Mik'
>>> s[:5]
'Hello'
>>> s[6:]
'Mike'
>>> s[:]
'Hello Mike'

字符串切片还可以设置取子字符串的顺序,格式为 [头下标:尾下标:步长] 。当步长大于0的时候,从左往右取字符;当步长小于0的时候,从右往左取字符。

示例:

1
2
3
4
5
6
7
8
9
10
11
>>> s='Hello Mike'
>>> s[0:5:1]
'Hello'
>>> s[0:6:2]
'Hlo'
>>> s[0:6:-1]
''
>>> s[4:0:-1]
'olle'
>>> s[4::-1]
'olleH'

字符串的处理与操作

  • 内置字符串处理函数

len(x) #返回字符串x的长度

str(x) #将任意类型的x转化为字符串类型

chr(x) #返回Unicode编码为x的字符

ord(x) #返回字符x的Unicode编码

hex(x) #将整数x转化为十六进制数

oct(x) #将整数x转化为八进制数

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
>>> s='Hello World'
>>> len(s)
11
>>> str(120)
'120'
>>> str(3+5)
'8'
>>> hex(62)
'0o76'
>>> ord('A')
65
>>> chr(65)
'A'

  • 查找类函数

find() #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中首次出现的位置,若不存在则返回-1.

rfind() #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中最后一次出现的位置,若不存在则返回-1.

index() #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中首次出现的位置,若不存在则抛出异常.

rindex() #查找一个字符串在另一个字符串指定范围内(默认是整个字符串)中最后一次出现的位置,若不存在则抛出异常.

count() #用来返回一个字符串在另一个字符串中出现的次数,若不存在则返回0.

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
>>> s='bird,fish,monkey,rabbit'
>>> s.find('b')
0
>>> s.rfind('fish')
8
>>> s.rfind('tiger')
-1
>>> s.index('tiger')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
>>> s.count('b')
3

  • 分割类函数

split() #以指定字符为分隔符,从原字符串的左端开始将其分割为多个字符串,并返回包含分割结果的列表.

rsplit() #以指定字符为分隔符,从原字符串的右端开始将其分割为多个字符串,并返回包含分割结果的列表.

partition() #以指定字符串为分隔符将原字符串分割为3个部分,分隔符之前的字符串,分隔符字符串和分隔符之后的字符串.

rpartition() #以指定字符串为分隔符将原字符串分割为3个部分,分隔符之前的字符串,分隔符字符串和分隔符之后的字符串.

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>> s='bird,fish,monkey,rabbit'
>>> s.split(',')
['bird','fish','monkey','rabbit']
>>> s='I am a girl'
>>> s.split(' ')
['I','am','a','girl']
>>> s.rsplit(' ')
['I','am','a','girl']
>>> s.split(maxsplit=2)
['I','am','a girl'] #此时以空白来从左往右分割, 'maxsplit=2'说明最多分割两次.
>>> s.rsplit(maxsplit=2)
['I am','a','girl'] #此时以空白来从右往左分割.
>>> s.partition('fish')
('I am a girl','','')
>>> s.partition('a')
('I ','a','m a girl')
>>> s.partition('am')
('I ','am',' a girl')

  • 字符串连接方法

join() #将列表中多个字符串进行连接,并在相邻两个字符串之间插入指定字符,返回新字符串.

示例:

1
2
3
4
5
>>> s=['apple','banana','pear','peach']
>>> ':'.join(s)
'apple:banana:pear:peach'
>>> '-'.join(s)
'apple-banana-pear-peach'

  • 大小写字符转换方法

lower() #将字符串转换为小写字符串.

uppper() #将字符串转换为大写字符串.

capitalize() #将字符串首字母变为大写.

title() #将字符串中每个单词的首字母都变为大写.

swapcase() #将字符串中的字符大小写互换.

示例:

1
2
3
4
5
6
7
8
9
10
11
>>> s='I have two big eyes'
>>> s.lower()
'i have two big eyes'
>>> s.upper()
'I HAVE TWO BIG EYES'
>>> s.capitalize()
'I have two big eyes'
>>> s.title()
'I Have Two Big Eyes'
>>> s.swapcase()
'i HAVE TWO BIG EYES'

  • 替换方法

replace() #替换字符串中指定字符或子字符串

示例:

1
2
3
>>> s='I have two big eyes'
>>> s.replace('big','大')
'I have two 大 eyes'

  • 删除字符串两端、右端或左端连续空白字符和指定字符方法

strip() #删除字符串两端空白字符.

rstrip() #删除字符串右端空白字符.

lstrip() #删除字符串左端空白字符.

1
2
3
4
5
6
7
8
9
10
>>> s='     abc     '
>>> s.strip()
'abc'
>>> s.rstrip()
' abc'
>>> s.lstrip()
'abc '
>>> s='====mike===='
>>> s.strip('=')
'mike'

  • 判断字符串是否以指定字符串开始或结束

startswith() #判断字符串是否以指定字符开始.

endswith() #判断字符串是否以指定字符结束.

1
2
3
4
5
6
7
>>> s='Python 程序设计.py'
>>> s.startswith('py')
False
>>> s.startswith('Python')
True
>>> s.endswith('py')
True

  • 判断字符串类型方法

isupper() #是否全为大写.

islower() #是否全为小写.

isdigit() #是否全为数字.

isalnum() #是否全为字母或汉字或数字.

isalpha() #是否全为字母或汉字.

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
>>> s='years'
>>> s.islower()
True

>>> s='YEARS'
>>> s.isupper()
True

>>> s='20241022'
>>> s.isdigit()
True

>>> s='I am a girl'
>>> s.isalpha()
False
>>> s=s.replace(' ','')
>>> s.isalpha()
True
>>> s.isalnum()
False

  • 字符串排版方法

center() #字符串居中对齐.

ljust() #字符串居左对齐.

rjust() #字符串居右对齐.

zfill() #输出指定宽度,不足的左边填0.

示例:

1
2
3
4
5
6
7
>>> s='hello mike'
>>> s.center(30.'=')
'==========hello mike=========='
>>> s.rjust(20,'*')
'**********hello mike'
>>> s.zfill(20)
'0000000000hello mike'


Insist on writing original high-quality articles. Your support is my biggest motivation.