Python字符串
字符串的拼接:
Python 中使用+
来合并两个字符串,这种合并字符串的方法叫做拼接。其基本语法如下:
result_string = source_string1 + source_string2
其中:
source_string1
:待合并的第一个字符串;source_string2
:待合并的第二个字符串;result_string
:合并后的字符串。
注意:如果需要,在两个字符串之间可以增加相应的空格,具体见下面的例子。例如,将姓氏和名字拼接成全名:
# coding=utf-8# 将姓氏和名字分别保存在两个变量中first_name = 'Zhang'last_name = 'san'
# 将姓氏和名字拼接,将结果存储在full_name变量中full_name = first_name + " " + last_nameprint(full_name)
输出结果:
Zhang san
字符串长度获取
Python 提供了len()
函数来计算,并返回字符串的长度,即字符串中单个元素的个数。其基本语法如下:
length = len(target_string)
其中:
target_string
: 目标字符串变量;length
: 保存字符串长度的变量;len
: 获取字符串长度的语法关键词。
下面给出了具体的使用示例:
# coding=utf-8# 创建一个字符串变量,获取其长度并打印出来
color = 'It is red'length = len(color)
print (length)
# 直接在len函数中引入字符串内容获得其长度,然后打印出来
print(len('This is a circle!'))
输出结果:
917
字符串查找
Python 提供了内置的字符串查找方法find()
,利用该方法可以在一个较长的字符串中查找子字符串。如果该字符串中,有一个或者多个子字符串,则该方法返回第一个子串所在位置的最左端索引,若没有找到符合条件的子串,则返回-1
。find()
方法的基本使用语法如下:
source_string.find(sub_string)
其中:
source_string
:源字符串;sub_string
:待查的目标子字符串;find
:字符串查找方法的语法关键字。
例如,在一个字符串中,查找两个单词的位置:
# coding=utf-8
# 创建一个字符串source_string = 'The past is gone and static'
# 查看"past"在source_string字符串中的位置
print(source_string.find('past'))
# 查看"love"在source_string字符串中的位置
print(source_string.find('love'))
输出结果:
4-1
字符串函数
-
string.find(str, beg=0, end=len(str)):检测字符串中是否包含子字符串 str,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串,返回子字符串的索引值,否则返回 -1。
str1 = "hello world" # 空格也算一个字符print(str1.find("w))print(str1.find("wo"))print(str1.find("l", 4, 10))print(str1.find("e", 3))
执行结果: ```6 6 9
-
1 ```
-
string.rfind(str, beg=0, end=len(string)):返回字符串 str 最后一次出现的位置(从右向左查询),如果没有匹配项则返回 -1。
str1 = "hello world"print(str1.rfind("l"))print(str1.rfind("l", 4, 10))print(str1.rfind("e", 3))
执行结果: ```9 9
-
1 ```
-
string.index(str, beg=0, end=len(string)):跟 find() 方法一样,只不过如果 str 不在 string 中会抛出一个异常。
-
string.rindex(str, beg=0, end=len(string)):跟 rfind() 方法一样,只不过如果 str 不在 string 中会抛出一个异常。
-
string.count(str, start= 0, end=len(string)):统计字符串里某个字符出现的次数。
str1 = "hello world"print(str1.count("l"))print(str1.count("l", 2, 9))
执行结果:
32
-
string.split(str=” “, num=string.count(str)):str 表示分割字符串的符号,num 表示分割次数,返回一个列表。
str1 = "hello world"print(str1.split()) # 默认是以一个空白符为分割符号print(str1.split("l"))print(str1.split("l", 1))
执行结果:
['hello', 'world']['he', '', 'o wor', 'd']['he', 'lo world']
-
string.rsplit(str=” “, num=string.count(str)):类似于 split() 函数,不过是从右边开始查找,返回一个列表。
str1 = "a b c"print(str1.rsplit())print(str1.rsplit(" ", 1)) # 只切分一次
执行结果:
['a', 'b', 'c']['a b', 'c']
-
string.partition(str):根据指定的分隔符将字符串进行分割。如果字符串包含指定的分隔符,则返回一个三元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。如果没有该分隔符,则抛出一个异常。
str1 = "www.educoder.net"print(str1.partition("."))
执行结果:
('www', '.', 'educoder.net')
-
string.rpartition(str):类似于 partition() 函数,不过是从右边开始查找。
str1 = "www.educoder.net"print(str1.rpartition("."))
执行结果:
('www.educoder', '.', 'net')
-
string.join(sequence):将序列中的元素以指定的字符连接生成一个新的字符串。sequence 表示要连接的元素序列。
list1 = ["www","educoder","net"]print(".".join(list1))
执行结果:
www.educoder.net
-
string.lower():将字符串中所有大写字母转换成小写。
-
string.upper():将字符串中所有小写字母转换成大写。
-
string.capitalize():将字符串的第一个字符转换为大写。如果已经是大写,则不变。
str1 = "hello"str2 = "Hello"print(str1.capitalize())print(str2.capitalize())
执行结果:
HelloHello
-
string.title():返回”标题化”的字符串,就是说所有单词的首个字母转化为大写,其余字母均为小写。
str1 = "How are you?"str2 = "www.baidu.com"print(str1.title())print(str2.title())
执行结果:
How Are You?Www.Baidu.Com
-
string.swapcase():字符串的大小写字母进行转换。
str1 = "How Are You?"print(str1.swapcase())
执行结果:
hOW aRE yOU?
-
string.replace(old, new[, max]):把字符串中的 old (旧字符串) 替换成 new (新字符串),如果指定第三个参数 max,则替换不超过 max 次。
str1 = "www//educoder//net"print(str1.replace("//","."))print(str1.replace("//",".",1))
执行结果:
www.educoder.netwww.educoder//net
-
sting.maketrans(intab, outtab):用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。两个字符串的长度必须相同,为一一对应的关系。通常与 translate 函数连用。
x = 'abcdefs'y = '1234567'str1='just do it'trantab = str1.maketrans(x,y)print(trantab)
执行结果(都是 ASCII 码值):
{97: 49, 98: 50, 99: 51, 100: 52, 101: 53, 102: 54, 115: 55}
-
string.translate(table):根据参数 table 给出的表(包含 256 个字符)转换字符串的字符,通常情况下,table 通过 maketrans 函数得到。
x = 'abcdefs'y = '1234567' # 就是将字符串中的a改成1,b改成2,以此类推str1='just do it'trantab = str1.maketrans(x,y)print(str1.translate(trantab))
执行结果:
ju7t 4o it
-
string.strip([chars]):移除字符串首尾指定的字符(默认为空格)或字符序列,chars 表示指定的字符或字符序列。
str1 = " hello world "str2 = "## hello world###"print(str1.strip()) # 只去除首位的,中间的空格不会移除print(str1.strip("#")) # 只去除首位的#号
执行结果:
hello world hello world
-
string.rstrip([chars]):与 strip 类似,不过 rstrip 函数只移除字符串末尾(最右侧)指定的字符(默认为空格)或字符序列。
-
string.lstrip([chars]):与 strip 类似,不过 lstrip 函数只移除字符串开头(最左侧)指定的字符(默认为空格)或字符序列。
-
string.startswith(substr, beg=0,end=len(string)):检查字符串是否是以指定子字符串 substr 开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
str1 = "this is string example....wow!!!"print (str1.startswith('this')) # 字符串是否以this开头print (str1.startswith('string', 8)) # 从第八个字符开始的字符串是否以 string 开头print (str1.startswith('this', 2, 4)) # 从第2个字符开始到第四个字符结束的字符串是否以this开头
执行结果:
TrueTrueFalse
-
string.endswith(substr, beg=0,end=len(string)):检查字符串是否是以指定子字符串 substr 结束,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
str1 = "this is string example"print (str1.endswith('example'))print (str1.endswith('str', 0, 11))print (str1.endswith('this', 2, 4))
执行结果:
TrueTrueFalse
-
string.center(width[, fillchar]):返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。如果指定的长度小于原字符串的长度则返回原字符串。
str1 = "www.educoder.net"print(str1.center(40, "#")) # 用#号来填充
执行结果:
############www.educoder.net############
-
string.ljust(width[, fillchar]):返回一个原字符串左对齐,并使用空格填充至指定长度 width 的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。
-
string.rjust(width[, fillchar]):返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。
str1 = "www.educoder.net"print(str1.ljust(40, "#"))print(str1.rjust(40, "#"))print(str1.rjust(5))
执行结果:
www.educoder.net################################################www.educoder.netwww.educoder.net
-
string.zfill(width):返回指定长度的字符串,原字符串右对齐,前面填充 0。
str1 = "www.educoder.net"str2 = "hello"print(str1.zfill(10))print(str2.zfill(10))
执行结果:
www.educoder.net00000hello
-
string.isalpha():如果字符串至少有一个字符并且所有字符都是字母或文字则返回 True,否则返回 False。
str1 = "###abc"str2 = "abc"print(str1.isalpha())print(str2.isalpha())
执行结果:
FalseTrue
-
string.isspace():如果字符串中只包含空格,则返回 True,否则返回 False。
str1 = " "str2 = "abc"print(str1.isspace())print(str2.isspace())
执行结果:
TrueFalse
-
string.isdigit():如果字符串只包含数字则返回 True 否则返回 False。
str1 = "abc12"str2 = "123"print(str1.isdigit())print(str2.isdigit())
执行结果:
FalseTrue
-
string.isalnum():如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。
str1 = "abc123"str2 = "##"print(str1.isalnum())print(str2.isalnum())
执行结果:
TrueFalse
-
string.isdecimal():检查字符串是否只包含十进制字符。
str1 = "educoder2020"str2 = "23443434"print(str1.isdecimal())print(str2.isdecimal())
执行结果:
FalseTrue
-
string.isnumeric():如果字符串中只包含数字字符,则返回 True,否则返回 False。
str1 = "educoder2020"str2 = "23443434"print(str1.isnumeric())print(str2.isnumeric())
执行结果:
FalseTrue
-
string.istitle():如果字符串中所有的单词拼写首字母是否为大写,且其他字母为小写则返回 True,否则返回 False。
str1 = "I Like Python"str2 = "I like python"print(str1.istitle())print(str2.istitle())
执行结果:
TrueFalse
-
string.isupper():如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False。
str1 = "I LIKE PYTHON"str2 = "I LIKE python"print(str1.isupper())print(str2.isupper())
执行结果:
TrueFalse
-
sting.islower():如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False。
str1 = "I LIKE python"str2 = "i like python"print(str1.islower())print(str2.islower())
执行结果:
FalseTrue