Python 文本序列类型(字符串类型 str)[学习 Python 必备基础知识][看此一篇就够了][长字符串][原始字符串 r][字符串常用方法]
您的“关注”和“点赞”,是信任,是认可,是支持,是动力......
如意见相佐,可留言。
本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。
1 字符串类型概述
在 Python 中处理文本数据是使用 str
对象,也称为字符串类型
。
字符串是由 Unicode 码位构成的不可变序列。
简单理解,若干个字符(可以包含字母、标点、特殊符号、中文、日文等全世界的所有文字)的集合就是一个字符串。
字符串字面值有多种不同的写法,如下所示:
- 单引号:
'允许包含有 "双" 引号'
。 - 双引号:
"允许包含有 '单' 引号"
。 - 三重引号:
'''三重单引号'''
,"""三重双引号"""
。使用三重引号的字符串可以跨越多行,其中所有的空白字符都将包含在该字符串字面值中。
举例如下所示:
'微信公众号:码农阿杰'
'微信公众号:"码农阿杰"' # 单引号允许包含双引号
"CSDN 博客地址 https://blog.csdn.net/manongajie"
"CSDN 博客地址 'https://blog.csdn.net/manongajie'" # 双引号允许包含单引号
'''
弱水三千,只取一瓢饮;
娇玫万朵,独摘一枝怜。
'''
"""
满天星斗,只见一颗芒;
人海茫茫,唯系你一人。
"""
2 处理字符串中的引号问题
2.1 分析字符串中的引号问题
当字符串内容中出现引号时(指的是字符串中出现的引号与定义字符串的引号相同),我们需要进行处理,否则 Python 解释器会报错。
举例如下所示:
print('I'm CodeFarmer_Ajie')
运行结果:
print('I'm CodeFarmer_Ajie')
^
SyntaxError: invalid syntax
可以这么理解,因为 Python 解释器会把遇到的第一个单引号到再次遇到单引号之间的内容当做字符串,也就是说 Python 解释器会将字符串中的单引号与第一个单引号配对,这样就会把'I'
当成字符串,而后面的m CodeFarmer_Ajie''
就变成了多余的内容,从而导致语法错误。
对于这种问题,我们有两种处理方法,如下内容所示。
2.2 处理方法一:对引号进行转义
在需要转义的引号前添加转义字符 \
即可。
举例如下所示:
str_demo = 'I\'m CodeFarmer_Ajie'
print(str_demo)
运行结果:
I'm CodeFarmer_Ajie
2.3 处理方法二:使用不同的引号包含字符串
- 如果字符串内容中出现了单引号,那么我们可以使用双引号包围字符串。
- 如果字符串内容中出现了双引号,那么我们可以使用单引号包围字符串。
举例如下所示:
str_demo1 = "I'm CodeFarmer_Ajie" # 如果字符串内容中出现了单引号,那么我们可以使用双引号包围字符串。
str_demo2 = '英文双引号为:"'
print(str_demo1)
print(str_demo2)
运行结果:
I'm CodeFarmer_Ajie
英文双引号为:"
3 处理字符串的换行问题
Python 对程序的换行有严格的语法要求。
想要换行书写一个比较长的字符串,必须在行尾添加反斜杠 \
。
举例如下所示:
str_demo = '弱水三千,只取一瓢饮;\
娇玫万朵,独摘一枝怜。'
print(str_demo)
运行结果:
弱水三千,只取一瓢饮; 娇玫万朵,独摘一枝怜。
4 Python 长字符串
由三个双引号"""
或者三个单引号'''
包围的字符串,被称为 Python 长字符串
。
简单理解,长字符串,就是可以直接换行(不用加反斜杠\
)书写的字符串。
当程序中有大段文本内容需要写成字符串时,建议使用长字符串形式,因为长字符串形式非常强大,可以在字符串中放置任何内容,包括单引号和双引号。
语法格式如下所示:
"""长字符串内容"""
'''长字符串内容'''
在《Python 注释详解》文章中有讲到可以使用三个单引号或者三个双引号对多行内容进行注释,这其实就是 Python 的长字符串。如果长字符串没有赋值给任何变量,那么这个长字符串就不会起到任何作用,和一段普通的文本无异,相当于注释(注意:Python 解释器并不会忽略长字符串,同样会按照语法解析,只不过长字符串没有实际作用)。
5 Python 原始字符串
5.1 Python 原始字符串概述
在普通字符串或者长字符串的开头加上 r
前缀,就变成了原始字符串。
在原始字符串中,反斜杠 \
不会被当作转义字符,所有的内容都会保持原来的样子。
格式如下所示:
str1 = r'原始字符串内容'
str2 = r"""原始字符串内容"""
举例如下所示:
str_demo = r'D:\Data\Tools\Python382\python.exe'
print(str_demo)
运行结果:
D:\Data\Tools\Python382\python.exe
5.2 处理原始字符串中的引号问题
普通格式的原始字符串中如果出现了引号,是需要对引号进行转义的。否则 Python 照样无法对字符串的引号精确配对。
但是,又和普通字符串有所不同,此时用于转义的反斜杠会变成字符串内容的一部分。
注意:Python 原始字符串中的反斜杠仍然会对引号进行转义,因此原始字符串的结尾处不能有反斜杠,否则字符串结尾处的引号会被转义,导致字符串不能正确结束。
举例如下所示:
str_demo = r'I\'m CodeFarmer'
print(str_demo)
运行结果:
I\'m CodeFarmer
以上问题有两种解决办法:
- 第一种:改用长字符串的写法,不要使用原始字符串。
- 第二种:单独书写反斜杠。
举例如下所示:
# 打印 D:\Data\Tools\Python382\
str_demo = r'D:\Data\Tools\Python382''\\' # 字符串拼接
print(str_demo)
运行结果:
D:\Data\Tools\Python382\
6 Python 字符串常用方法详解
请参见博文 《Python 字符串常用方法详解》。