python:string模块的部分函数介绍

本文全面介绍了Python中字符串的各种操作方法,包括大小写转换、判断函数、填充、子字符串搜索、替换、分割、连接和修剪等。通过实例代码详细解析每个函数的使用场景和技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

string模块包含的是一些处理字符串的函数。

1 大小写转换

分为三种类型的大小写转换,如下:

1.1 全部大小写转换:upper()与lower()

这两个函数分别将字符串变为大小写,下面为示例代码:

import string

s = 'abc'
S = 'ABC'
print(s.upper())
print(S.lower())

结果输出:

ABC
abc

1.2 将字符串首部变更大小写:title()与capitalize()

title()将字符串中所有单词的首字母大写,其他位置的字符全部小写。
capitalize()将字符串的首字母(第一个单词的第一个字母)大写,其余全部小写。

下面为示例代码:

import string

str1 = 'aaBB AAbb'
print(str1.title())
print(str1.capitalize())

输出结果为:

'Aabb Aabb'
'Aabb aabb'

1.3 大小写反转:swapcase()

swapcase()将字符串的小写改为大写,大写则改为小写。示例代码如下:

import string

str2 = 'Hello World!'
print(str2.swapcase())

输出结果为:

hELLO wORLD!

2 is判断函数

这一类函数根据对字符串的判断,返回True或者False。

isdecimal():检查字符串是否只包含十进制字符
isalpha():检查字符串是否全为字母
isdigit():检查字符串是否全为数字
isalnum():检查字符串是否只含数字和字母
isupper():检查字符串是否全为大写
islower():检查字符串是否全为小写
istitle():检查字符串中的全部单词是否为首字母大写,而其他字母是小写
isspace():检查字符串是否为空白符(空格、换行、制表符)
isprintable():检查字符串是否为可打印字符(空白符的话只有空格是可打印了,换行‘\n’与制表符’\t’不可以)
isidentifier():检查字符串是否符合命名规则(只含字母、数字和下划线,且只能以字母或下划线开头)

示例代码如下:

import string

print('1.234'.isdecimal()) # 包含的不是十进制字符,返回False
print('abc123'.isalpha()) # 不全是字母,返回False
print('123'.isdigit()) # 全是数字,返回True
print('1a2b'.isalnum()) # 只包含字母与数字,返回True
print('ABc'.isupper()) # 并不全是大写字母,返回Fasle
print('abc'.islower()) # 全为小写字母,返回True
print('Abb Cdd Eff'.istitle())  # 字符串的三个单词均为首字母大写,其他小写,返回True
print(' \n\t'.isspace()) # 均为空白符(空格、换行、制表符),返回True
print('hello world\n'.isprintable()) # 包含'\n',为非打印字符,返回False
print('abc_123'.isidentifier()) # 符合命名规则,返回True

输出结果为:

False
False
True
True
False
True
True
True
False
True

3 字符串填充

填充,是将一定长度的字符串,用给定的字符扩充至一定长度。有两个注意点:
1、扩充的长短——width,当字符串比width小时才会扩充;当字符串的长度大于width,则返回字符串本身。
2、扩充的位置,有三类:源字符串居左、居右和居中

居中:center(width[, fillchar]),源字符串位于中间,扩充字符在两边
居左:ljust(width[, fillchar]),源字符串位于左边,扩充字符在字符串的右边
居右:rjust(width[, fillchar]),源字符串位于右边,扩充字符在字符串的左边

注意,填充字符fillchar是可选的,默认为空格,可更改为任意字符。示例代码如下:

import string

str1 = 'bilibili'
print(str1.center(10, '*'))
print(str1.ljust(10, '*'))
print(str1.rjust(10, '*'))

输出结果为:

*bilibili*
bilibili**
**bilibili

还有一个填充函数,zfill()函数,该函数只有一个参数width,即只能指定输出字符串的宽度。填充字符固定为‘0’,源字符串在右边。另一方面,此函数可识别字符串的正负(+,-),这种情况下,正负号仍为第一个字符,填充’0’直到源字符串的长度达到width-1(因为正负号宽度为1,这样正负号与现在的字符串总长为width)。示例代码如下:

import string

print('12345'.zfill(10))
print('-12345'.zfill(10))
print('+a2345'.zfill(10))
print('#12345'.zfill(10))

输出结果为:

0000012345
-000012345
+0000a2345
0000#12345

4 子字符串搜索

4.1 子字符串位置搜索

语法:

count(sub[, start[, end]])

功能是搜索字符串中是否含有指定子字符串sub,若有则返回出现次数。start与end代表字符串的搜索位置(从指定字符串的start到end的位置搜索子字符串)。参数sub为必选参数,start与end的为可选参数。若未指定start与end,则代表对全字符串搜索。示例代码如下:

import string

print('ababcabcd'.count('ab'))
print('ababcabcd'.count('ab', 2))
print('ababcabcd'.count('ab', 2, 4))

输出结果为:

3
2
1

4.2 字符串开始与结尾判断

语法:

startswith(prefix[, start[, end]])
endswith(suffix[, start[, end]])

这两个函数分别判断字符串的开始或者末尾的字符串为指定字符串,可以限定从字符串的哪个位置到哪个位置为搜索范围(start到end),若为指定start和end,则对整个字符串进行搜索判断。两个函数均属于判断函数,返回值为True和False。

注意:prefix与suffix可以为子字符串,也可为元组。若为元组,则只要元组内的元素有一个符合条件,即为True。

示例代码如下:

import string

print('abc123'.startswith('abc'))
print('abc123'.endswith('123'))
print('abc123'.startswith('ab', 0, 2))
print('hello world'.startswith(('he','wo')))

输出结果为:

True
True
True
True

4.3 字符串位置锁定find与index函数

find(sub[, start[, end]]):返回第一个子字符串的位置信息,若不存在则返回-1
rfind(sub[, start[, end]]):返回最右的第一个子字符串的位置信息,若不存在则返回-1
index(sub[, start[, end]]):返回第一个子字符串的位置信息,若不存在则报错
rindex(sub[, start[, end]]):返回最右的第一个子字符串的位置信息,若不存在则报错

这些函数均可以指定开始与结束的边界。示例代码如下:

import string

s = 'abc123ABC123abc'
print(s.find('123'))
print(s.rfind('abc'))
print(s.index('abc'))
print(s.rindex('abc'))

输出结果为:

3
12
0
12

注意:以上四个实例函数中,均在指定字符串中找到对应子字符串。在其他情况下,若未找到子字符串,对于find,返回-1;对于index,则会报错。

5 字符串替换

语法:

replace(old, new[, count])

函数功能是,将搜索到的旧字符串old替换为新字符串new。count为可选参数,意义为更改个数。示例代码如下:

import string

s = '12ab12cd'
print(s.replace('ab', 'cd'))
print(s.replace('12', '34'))
print(s.replace('12', '34', 1))
print(s.replace('56', '78')) # 如果第一个参数old(这里为'56')不存在于源字符串s中,则返回源字符串s,这是因为无法替换,只好返回源字符串s

输出结果为:

12cd12cd
34ab34cd
34ab12cd
12ab12cd

6 字符串分割

常用函数为partition()与rpartition()。

partition(sep)对给定字符串,将其分割为三部分(只有一个参数——sep,且必须指定sep的值)。首先搜索到子字符串sep,将sep之前的部分作为第一部分,sep本身作为第二部分,sep之后的部分作为第三部分。

前面提到的两个函数十分相似,但是当源字符串中不包含sep子字符串时,有一点细微差别:
1、partition()会把字符串分为:源字符串、空白、空白;
2、rpartition()会把字符串分为:空白,空白,源字符串。

示例代码:

import string

s = '12ab34cd56'
print(s.partition('34'))
print(s.rpartition('34'))
print(s.partition('78')) # 源字符串中没有'78',将字符串分为源字符串、空白、空白
print(s.rpartition('78')) # 源字符串中没有'78',将字符串分为空白、空白、源字符串

输出结果为:

('12ab', '34', 'cd56')
('12ab', '34', 'cd56')
('12ab34cd56', '', '')
('', '', '12ab34cd56')

另外两种字符串分割函数,语法如下:

split(sep=None, maxsplit=-1)
rsplit(sep=None, maxsplit=-1)

参数sep与maxsplit均为可选参数。前者指明分割字符串时的分隔符(默认为所有的空字符,包括空格、换行\n、制表符\t);后者指明分割次数,默认值为-1(-1代表分割所有)。而split是从左到右切割,rsplit是从右往左切割。

实例代码如下:

import string

s = 'ab,cd,ef,gh'
print(s.split(',', 2))
print(s.rsplit(',', 2))

结果输出为:

['ab', 'cd', 'ef,gh']
['ab,cd', 'ef', 'gh']

7 连接字符串

c.join(iterable)将可迭代对象iterable的元素用字符c连接起来。可迭代对象包括字符串、列表、元组、字典、集合。而且可迭代对象的元素必须是字符串类型,不能包含数字或者其他类型的元素。

下面为示例代码:

import string

str1 = 'csdn'
list1 = ['c', 's', 'd', 'n']
tuple1 = ('c', 's', 'd', 'n')
dict1 = {'1': 'c', '2': 's', '3': 'd', '4': 'n'}
set1 = {'c', 's', 'd', 'n'}
print('~'.join(str1))
print('-'.join(list1))
print('+'.join(tuple1))
print('*'.join(dict1))  # 只对键进行字符串连接,忽略值。
print('^'.join(set1))

输出结果为:

c~s~d~n
c-s-d-n
c+s+d+n
1*2*3*4
c^s^n^d

类似于:list2 = [1, 2, 3, 4]或者list3 = ['1', '2', ['3', '4']]。若选择这两个可迭代对象作为参数,则会报错。因为规定了参与迭代的元素必须是字符串类型,不能包含数字或者其他类型。

8 字符串修剪

分三种类型:

8.1 strip()

语法:str.strip([chars]),chars为指定的字符序列,返回值为移除字符串头尾指定的字符后,生成的新字符串。

作用:用于移除字符串头尾指定的字符(默认为空格或者换行符)或字符序列。

注意:只能删除开头或是结尾的字符,不能删除中间部分的字符。

示例代码如下:

import string

str1 = '   123 456   '
str2 = '0012300'
str3 = 'a1234321a'
print(str1.strip()) # 删除开头与结尾的空格
print(str2.strip('0')) # 删除开头与结尾的0
print(str3.strip('12a')) # 只要首尾包含有指定字符序列(这里是'12a')的字符(这里是'1','2','a'),就删除该字符

输出结果为:

123 456
123
343

8.2 rstrip()

语法:str.rstrip([chars])

作用是删除字符串str末尾的指定字符chars(默认为空格)。返回值为,删除str字符串末尾的指定字符后生成的新字符串。

示例代码如下:

import string

str1 = '   123 456   '
str2 = '0012300'
str3 = 'a1234321a'
print(str1.rstrip()) # 删除结尾的空格
print(str2.rstrip('0')) # 删除结尾的0
print(str3.rstrip('12a')) # 只要尾部包含有指定字符序列(这里是'12a')的字符(这里是'1','2','a'),就删除该字符

输出结果为:

   123 456
00123
a12343

8.3 lstrip()

语法:str.lstrip([chars])

作用是删除字符串str左边的指定字符chars(默认为空格)。返回值为,删除str字符串左边的指定字符后生成的新字符串。
示例代码如下:

import string

str1 = '   123 456   '
str2 = '0012300'
str3 = 'a1234321a'
print(str1.lstrip()) # 删除开头的空格
print(str2.lstrip('0')) # 删除开头的0
print(str3.lstrip('12a')) # 只要字符串首部包含有指定字符序列(这里是'12a')的字符(这里是'1','2','a'),就删除该字符

结果输出为:

123 456   
12300
34321a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值