(一)字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号 ( ' 或 " ) 来创建字符串。顾名思义,羊肉串是由羊肉做成的串,而字符串就是由字符组成的。 字符串的本质是:字符序列。
2 Python 不支持单字符类型,单字符也是作为一个字符串使用的。创建字符串很简单,只要为变量分配一个值即可。例如:var1 = 'Hello World!'var2 = "Python"
Python 的字符串是不可变的,我们无法对原字符串做任何修改。但可以将字符串的一部分复制到新创建的字符串,达到 “看起来修改 ” 的效果。 (二)字符串的编码
Python3 直接支持 Unicode ,可以表示世界上任何书面语言的字 符。Python3 的字符默认就是 16 位 Unicode 编码,ASCII码是 Unicode编码的子集。转换技巧:
使用内置函数ord()可以把字符转换成对应的Unicode码; 使用内置函数chr()可以把十进制数字转换成对应的字符;
print(ord('A')) #65print(ord('成')) #25104print(chr(66)) #'B'print(ord('龙') )#40857
(三)引号创建字符串
我们可以通过 ①单引号或双引号创建字符串。例如: a='abc' b="sxt" 使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符。例如:a = "I'm a teacher!"print(a) #I'm a teacher!b = 'my_name is "Jackie Chan"'print(b) #my_name is "Jackie Chan"
② 连续三个单引号或三个双引号,可以帮助我们创建多行字符串。在 长字符串中会保留原始的格式。例如: (四)空字符串和len()函数
Python 允许空字符串的存在,不包含任何字符且长度为 0 。例如:
c = ''print(len(c)) #结果:0
其中,len() 用于计算字符串含有多少字符。 (五)转义字符
我们可以使用 \+特殊字符 ,实现某些难以用字符表示的效果。比如:换行等。常见的转义字符有这些:转义字符 | 描述 |
---|---|
\(在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数,y 代表 0~7 的字符,例如:\012 代表换行。 |
\xyy | 十六进制数,以 \x 开头,yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
代码
a = 'I\nlove\bU'print(a)print('a\rabb\\cc')
(六)Python字符串运算符
下表实例变量 a 值为字符串 "Hello",b 变量值为 "Python":
操作符 | 描述 | 实例 |
---|---|---|
+ | 字符串连接 | >>>a + b 'HelloPython' |
* | 重复输出字符串 | >>>a * 2 'HelloHello' |
[] | 通过索引获取字符串中字符 | >>>a[1] 'e' |
[ : ] | 截取字符串中的一部分 | >>>a[1:4] 'ell' |
in | 成员运算符 - 如果字符串中包含给定的字符返回 True | >>>"H" in a True |
not in | 成员运算符 - 如果字符串中不包含给定的字符返回 True | >>>"M" not in a True |
r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 | >>>print r'\n' \n >>> print R'\n' \n |
% | 格式字符串 | 请看下一章节 |
具体代码
a = "Hello"b = "Python"print("a + b 输出结果:", a + b)print("a * 2 输出结果:", a * 2)print("a[1] 输出结果:", a[1])print("a[1:4] 输出结果:", a[1:4])if ("H" in a): print( "H 在变量 a 中")else: print( "H 不在变量 a 中")if ("M" not in a): print("M 不在变量 a 中")else: print("M 在变量 a 中")print(r'\n')print(R'\n')
运行效果:
字符串拼接 :可以使用 + 将多个字符串拼接起来。例如: ’aa’+ ’bb’ 结果 是 ’aabb’-
如果 + 两边都是字符串,则拼接。
-
如果 + 两边都是数字,则加法运算
-
如果 + 两边类型不同,则抛出异常
可以将多个字面字符串直接放到一起实现拼接。例如: ’aa’’bb’ 结果是 ’aabb’
a = 'sxt'+'qiqi' #结果是:'sxtqiqi'b = 'sxt''qiqi' #结果是:'sxtqiqi'
(七)字符串切片slice操作
切片 slice 操作可以让我们快速的提取子字符串。标准格式为:
[起始偏移量start:终止偏移量end:步长step]
操作和说明 | 示例 | 结果 |
[:] 提取整个字符串 | “abcdef”[:] | “abcdef” |
[start:] 从start索引开始到结尾 | “abcdef”[2:] | “cdef” |
[:end] 从头开始知道end-1 | “abcdef”[:2] | “ab” |
[start:end] 从start到end-1 | “abcdef”[2:4] | “cd” |
[start:end:step] 从start提取到end-1,步长是step | “abcdef”[1:5:2] | “bd” |
示例 | 说明 | 结果 |
"abcdefghijklmnopqrstuvwxyz" [-3:] | 倒数三个 | “xyz” |
"abcdefghijklmnopqrstuvwxyz" [-8:-3] | 倒数第八个到倒数第三个( 包头不包尾 ) | 'stuvw' |
"abcdefghijklmnopqrstuvwxyz" [::-1] | 步长为负,从右到左反向提取 | 'zyxwvutsrqponmlkjihgfedcba' |
注意:切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始偏移量小于0则会当做0,终止偏移量大于“长度-1”会被当成-1。例如:
(八)split()分割和join()合并
split() 可以基于指定分隔符将字符串分隔成多个子字符串 ( 存储到列 表中) 。如果不指定分隔符,则默认使用空白字符 ( 换行符 / 空格 / 制表符) 。示例代码如下:a = "to be or not to be"print(a.split())print(a.split('be'))
运行效果: join() 的作用和 split() 作用刚好相反,用于将一系列子字符串连接起 来。示例代码如下: a = ['sxt','sxt100','sxt200']print('*'.join(a))
运行效果:
总结:
拼接字符串要点: 使用字符串拼接符 + ,会生成新的字符串对象,因此不推荐使 用 + 来拼接字符串。推荐使用 join 函数,因为 join 函数在拼接字 符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。
(九) 字符串常用方法汇总
字符串有很多常用的方法,我们需要熟悉。我们通过表格将这些方 法汇总起来,方便大家查阅。希望大家针对每个方法都做一次测试。我们以一段文本作为测试:
a='''ablchbjj '''
方法和使用示例 | 说明 | 结果 |
len(a) | 字符串长度 | 8 |
a.startswith('abl') | 以指定字符串开头 | True |
a.endswith('jj') | 以指定字符串结尾 | True |
a.find('b') | 第一次出现指定字符串的位置 | 1 |
a.rfind('b') | 最后一次出现指定字符串的位置 | 5 |
a.count("lch") | 指定字符串出现了几次 | 1 |
a.isalnum() | 所有字符全是字母或数字 | True |
来源地址:https://blog.csdn.net/qq_63976098/article/details/131506481