Python基本数据类型之字符串
字符串由若干个字符组成,用双引号(" ")、单引号(' ')或者三引号(''' '''或者""" """)包围。例如:
name='孙悟空' # 定义一个表示名字的变量name,并赋值为孙悟空
address="花果山" # 定义一个表示地址的变量address,并赋值为花果山
gender="""猴子""" # 定义一个表示性别的变量gender,并赋值为猴子
print(name,address,gender,sep="-")
上述输出结果为:
孙悟空-花果山-猴子
单引号和双引号之间可以互相嵌套,三引号包围的字符串不参与任何操作(例如:赋值、输出、切片等)时,该字符串则相当于注释,不起到任何作用。
str1='a' # 定义一个变量str1,并赋值为a
str2="'b'" # 定义一个变量str2,并赋值为b
str3="""'c'""" # 定义一个变量str3,并赋值为c
'''这是一段文字'''
print(str1,str2,str3)
上述输出结果为:
a 'b' 'c'
1、字符串的不可变
python中没有char类型表示单个字符,只有字符串类型str。字符串对象是不可变类型,即不可通过索引下标修改,也不可以通过del关键字删除单个字符。例如:
name="Tom Green"
name[0]="J"
上述运行后会报错:
Traceback (most recent call last):
File "e:/study/demo.py", line 2, in
name[0]="J"
TypeError: 'str' object does not support item assignment
2、长字符串
Python长字符串由三个双引号或者三个单引号包围,当程序中长文本内容需要定义成字符串时,建议使用长字符串形式,字符串中可以包含任何内容,包括单引号和双引号。长字符串中的换行、空格、缩进等空白符也会输出,例如:
name="""你的名字是:
Tom
"""
print(name)
上述输出结果为:
你的名字是:
Tom
3、原始字符串
在普通字符串或者长字符串的开头加上 r 或者R前缀,就变成了原始字符串。例如:
name=r"你的名字是:Tom &@%"
print(name)
上述输出结果为:
你的名字是:Tom &@%
4、字符串中包含引号的解决办法
当字符串中出现引号时,该引号不作为字符串标记,而是作为字符串内容的一部分,需要经过特殊处理,否则会报语法错误,例如:'I'm a great coder!' ,字符串中间出现了单引号,在通过字符串标记截取字符串时,会把'I'作为一个字符串,解决方法如下:
①通过反斜杠\处理
在引号前面添加反斜杠\就可以对引号进行转义,让 Python 把它作为普通文本对待。例如:'I\'m a great coder!' ,会把两端单引号作为字符串的标记符号,而把中间的所有内容当作字符串处理,该字符串的值为:I'm a great coder!。
②使用不同的引号包围字符串
例如:"I'm a great coder!" ,会把相同类型的引号进行匹配,会把匹配成功的两个引号中间的内容当作字符换的值,因单引号、双引号、三引号均可用作字符串标记,因此可用与内容中引号不同的标记符号来标记该字符串。
5、字符串结尾出现转义符号(\)的问题
因为转义符号的特殊性,我们需要对字符串中的每个\都进行转义,这种写法需要特别谨慎,稍有疏忽就会出错。针对这种包含转义字符的字符串(例如:文件地址、url),即便使用原始字符串,当字符串中有\对引号进行转义时,既会对引号进行转义,也会将\保留在字符串的值中。因此,原始字符串的结尾不能是\,否则会对字符串结尾的引号进行转义,导致字符串不能正确结束,针对上述问题,解决方法有两种:
①一种是采用长字符串的写法(即三引号,该写法适用于字符串中间需要保留单引号或者双引号的情况)。例如: str1= """D:\Program Files\Python 3.8\ """
②另一种是把转义字符单独摘出来,通过字符串连写的方式。例如: str1 = r'D:\Program Files\Python 3.8' '\\'
君子坦荡荡,小人长戚戚