文章目录
字符串的定义
-
字符串是容器型数据类型,使用单引号或双引号作为容器标志,容器中的元素全是字符。
-
字符串是不可变的(不支持增删改)、有序的(支持下标操作)
# 字面量语法
b = "hello, world"
# 多行字符串
c = '''
hello,
world!
goodbye,
world!
'''
print(b)
print(c)
运行结果如下:
hello, world
hello,
world!
goodbye,
world!
字符编码
计算机不能直接存储字符(符号),只能存储数字;为了能够存储字符,把每一个字符关联了一个固定的数字,这个固定的数字就是对应的字符的编码。
-
ASCII
在计算机中采用一个字节保存一个字符(总共128个字符),字符包含了所有的字母、数字和常用符号。
常见字符的编码值:
数字字符
0~9
:48~57
大写字母
A~Z
:65~90
小写字母
a~z
:97~122
-
Unicode
Unicode(中文:万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。(已经收录超过13万个字符)
Unicode编码中包含了ASCII码表中所有的字符,其中
中文
编码范围4E00~9FA5
-
chr
和ord
函数chr
和ord
这两个函数可以实现字符和编码值之间的相互转换。
chr
(编码值)—> 获取编码值对应的字符ord
(字符)—> 获取指定字符对应的编码值
print(chr(68)) # D
print(ord('%')) # 37
print(ord('风')) # 39118
转义字符串和原始字符串
可以在字符串中使用\
(反斜杠)来表示转义,也就是说\
后面的字符不再是它原来的意义。
常见的转义字符有:
\n
—> 换行
\t
—> 水平制表符
\'
—> 单引号
\"
—> 双引号
\\
—> 反斜杠
s1 = '\'hello\'' # 'hello'
s2 = "\\hello\\" # \hello\
s3 = '\\time up \\now' # \time up \now
Python中的字符串可以r
或R
开头,这种字符串被称为原始字符串,意思是字符串中的每个字符都是它本来的含义,没有所谓的转义字符。例如,在字符串'hello\n'
中,\n
表示换行;而在r'hello\n'
中,\n
不再表示换行,就是反斜杠和字符n
。
# 原始字符串
d = r'c:Users\Administrator\abc\hello.py' # c:Users\Administrator\abc\hello.py
# 带占位符的字符串(格式化字符串)
e = f'文件路径{
d}' # 文件路径c:Users\Administrator\abc\hello.py
Python中还允许在\
后面还可以跟一个八进制或者十六进制数来表示字符,例如\141
、x61
都表示小写字母a
,前者是八进制表示法,后者是十六进制表示法。另外一种表示字符的方式是在\u
后面跟Unicode字符编码,例如\u9a85\u660b
表示中文"骅昋"。
s4 = '\141\142\143\x61\x62\x63'
# Unicode
s5 = '\u9a85\u660b'
字符串的运算
拼接和重复
使用+
和*
实现字符串的拼接与重复。
a = 'hello, world!'
b = 'he'
c = 'apple'
# 重复运算
print(b * 5) # hehehehehe
# 字符串拼接
c = b + c
print(c) # heapple
比较运算
字符串在计算机内存中也是以二进制形式存在的,那么字符串的大小比较比的是每个字符对应的编码的大小。
a = 'hello, world!'
b = 'he'
c = 'apple'
# 比较运算(比较字符串的内容--->比较字符串编码大小)
print(a == b) # False
print(a != b) # True
print(a > c) # True
print(a >= b) # True
Python中还有一个运算符is
,如果用is
来比较两个字符串,它比较的是两个变量对应的字符串是否在内存中相同的位置(内存地址),简单地说就是两个变量是否对应同一个字符串。
a = 'hello, world!'
b = 'hello, world!'
c = b
# 比较字符串内容
print(a == b, b == c) # True True
print(a is b, b is c) # True True
成员运算
与列表操作一致
a = 'hello, world!'
# 成员运算
print(