10. 字符串
字符串是一种表示文本数据的类型,使用单引号 'xx' 或双引号 "xx" 括起来表示文本数据,但是注意同一类型的引号对应使用,而不要单、双引号混用。
此外,区别于其他语言,Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
10.1 字符串的输入和输出
Python 一般字符串的输出使用 print( ) 函数完成,输出字符串型的变量时可以使用 %s 占位。
Python 提供了 input( ) 函数从标准输入读取一行文本,默认的标准输入是键盘。
string1 = "我是一段字符串"
string2 = input("请输入一段字符串:")
# string3 = "我是一段字符串' -> 单、双引号混用
print("string1 = " + string1)
print("string2 = %s" % string2)
10.2 访问字符串中的值
字符串的访问通过下标完成,每个字符都对应一个下标,编号从0开始。
支持对字符串进行切片提取,格式为:[起始:结束:步长],属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。
string = "abcdefg"
print(string[0]) # 输出结果为:a
print(string[3:5]) # 输出结果为:de
10.3 字符串运算符
操作符 | 描述 | 实例 |
---|---|---|
+ | 将两个字符串首尾连接成一个字符串 | string = string1 + string2 |
* | 将一个字符串重复若干次,首尾连接成一个字符串 | string = string1* n |
in | 如果字符串中包含给定的字符串,返回True | "a" in string |
not in | 如果字符串中不包含给定字符串,返回True | "a" not in string |
10.4 字符串内建函数
10.4.1 检测字符串是否包含子字符串
检测字符串中是否包含特定的子字符串,一般有以下两种方法:
-
find( ) 函数:一般格式为:string.find(sub, start, end),如果包含则返回索引,反之返回-1
-
index( ) 函数:一般格式为:string.index(sub, start, end),如果包含则返回索引,反之直接报错
相关参数如下:
必填参数:① sub -> 指定检索的子字符串;
可选参数:② start -> 开始检索的索引,默认为0;③ end -> 结束检索的索引,默认为字符串的长度。
string = "abcdefg"
string.find("abc", 0, len(string)) # 0
string.find("bc") # 1
string.index("efg", 0, len(string)) # 4
string.find("cba", 0, len(string)) # -1
# string.index("cba", 0, len(string) # 报错
10.4.2 字符串替换
replace( ) 函数:将字符串中的子字符串(旧)替换为新字符串,返回一个副本,原字符串不变,一般格式为:string.replace(old, new, count),相关参数如下:
必填参数:① old -> 将被替换的字符串;② new -> 新字符串,用于替换 old 字符串;
可选参数:③ count -> 替换不超过 count 次,默认为-1(全部替换)。
string = "abc defg abc"
string2 = string.replace("abc", "666")
string3 = string.replace("abc", "666", 1)
print("string={}, string2={}, string3={}".format(string, string2, string3))
# string=abc defg abc, string2=666 defg 666, string3=666 defg abc
10.4.3 统计子字符串出现的次数
count( ) 函数:统计字符串中某个子字符串出现的次数,一般格式为:string.count(sub, start, end=len),相关参数如下:
必填参数:① sub -> 指定检索的子字符串;
可选参数:② start -> 开始检索的索引,默认为0;③ end -> 结束检索的索引,默认为字符串的长度。
string = "abcdefgabc"
print(string.count("abc")) # 2
print(string.count("cba")) # 0
10.4.4 字符串切割
split( ) 函数:通过指定分隔符对字符串进行切片,返回值为切割后的子字符串列表,一般格式为:string.split(sep, maxsplit),相关参数如下:
必填参数:① sep -> 指定的分隔符,字符串格式;
可选参数:② maxsplit -> 替换不超过 maxsplit 次,默认为-1(全部替换)。
string = "a-bc-def-g"
substring = string.split("-")
substring2 = string.split("-", 1)
print(substring) # ['a', 'bc', 'def', 'g']
print(substring2) # ['a', 'bc-def-g']
10.4.5 字符串大小写转换
Python 中提供了多种函数对字符串进行大小写转换,返回一个副本,原字符串不变,详细如下:
-
upper( ) 函数:所有字母大写,一般格式为:string.upper( )
-
lower( ) 函数:所有字母小写,一般格式为:string.lower( )
-
capitalize( ) 函数:首字母大写,其他字母小写,一般格式为:string.capitalize( )
-
title( ) 函数:每个单词首字母大写,其他小写,一般格式为:string.title( )
string_low = "my name is john"
string_up = "My Name Is JOHN"
string1 = string_low.upper()
string2 = string_up.lower()
string3 = string_low.capitalize()
string4 = string_low.title()
print("string_low={}, string_up={}".format(string_low, string_up)) # string_low=my name is john, string_up=My Name Is JOHN
print("string1={}, string2={}".format(string1, string2)) # string1=MY NAME IS JOHN, string2=my name is john
print("string3={}, string4={}".format(string3, string4)) # string3=My name is john, string4=My Name Is John
如何理解计算机中的大小写字母的相互转化?
计算机中字母都是通过 ASCII码 存储
在 ASCII码 中,小写字母的值总是比大写字母的值大32。
例如:大写字母A的 ASCII码 为65,b为66,小写字母a的 ASCII码 为97,b为98
10.4.6 字符串首尾处理
应用场景中常需要对字符串的首尾进行处理,包括检查数据内容,截掉指定内容等等,一般有以下几种方法:
-
startswith( ) 函数:检查字符串是否以指定字符串开头,返回值为 bool 变量,True 或 False,一般格式为:string.startswith( )
-
endswith( ) 函数:检查字符串是否以指定字符串结尾,返回值为 bool 变量,True 或 False,一般格式为:string.endswith( )
-
strip( ) 函数:截掉字符串首尾的指定字符,返回一个副本,原字符串不变,一般格式为:string.strip( )
-
lstrip( ) 函数:截掉字符串头部(左边)的指定字符,返回一个副本,原字符串不变,一般格式为:string.lstrip( )
-
rstrip( ) 函数:截掉字符串尾部(右边)的指定字符,返回一个副本,原字符串不变,一般格式为:string.rstrip( )
string = "abcdefgabc"
print(string.startswith("ab")) # True
print(string.endswith("ab")) # False
string1 = string.strip("abc")
string2 = string.lstrip("abc")
string3 = string.rstrip("abc")
print("string={}".format(string)) # string=abcdefgabc
print("string1={}".format(string1)) # string1=defg
print("string2={}".format(string2)) # string2=defgabc
print("string3={}".format(string3)) # string3=abcdefg
10.5 转义字符
在输出字符串时,对于单引号或者双引号这些特殊的符号,一般都有特殊的含义。
如果需要输出这些符号,可以对它们进行转义,一般使用“反斜杠+转义字符”的格式进行输出,常见的转义字符如下表所示:
转义字符 | 代表含义 | 转义字符 | 代表含义 |
---|---|---|---|
\(在行尾时) | 反斜杠符号 | \\ | 反斜杠符号 |
\' | 单引号 | \" | 双引号 |
\n | 换行 | \t | 横向制表符 |
\b | 退格 | \a | 响铃 |
print("It\'s an apple") # It's an apple
print("apple\tbanana\torange") # apple banana orange