轻松熊喵喵个人笔记 -- Python字符串(上)
字符串基本特点
很多人初学编程时,总是担心自己数学不行,潜意识里认为数学好才能编程。实际上大多数程序员打交道最多的是“字符串”而不是“数字”。因为,编程是用来解决现实问题的,因此逻辑思维的重要性远远超过数学能力。
字符串的本质是:字符序列。Python 的字符串是不可变的,我们无法对原字符串做任何修改。但可以将字符串的一部分复制到新创建的字符串,达到“看起来修改”的效果。
Python 不支持单字符类型,单字符也是作为一个字符串使用的。
字符串的编码
Python3 直接支持 Unicode,可以表示世界上任何书面语言的字符。Python3 的字符默认就是 16 位 Unicode 编码,ASCII 码是 Unicode 编码的子集。
使用内置函数 ord()可以把字符转换成对应的 Unicode 码;
使用内置函数 chr()可以把十进制数字转换成对应的字符。
>>> ord('A')
65
>>> ord('轻')
36731
>>> chr(66)
'B'
>>> ord('松')
26494
引号创建字符串
我们可以通过单引号或双引号创建字符串。例如:a=’abc’; b=”sxt”
使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符。例如:
>>> a = "I'm a teacher!" >>> print(a)
I'm a teacher!
>>> b = 'my_name is "TOM"' >>> print(b)
my_name is "TOM"
连续三个单引号或三个双引号,可以帮助我们创建多行字符串。例如:
>>> resume = ''' name="qingsongxiong" company="dancer" age=18
lover="Tom"'''
>>> print(resume)
name="qingsongxiong" company="dancer" age=18
lover="Tom"
空字符串和 len()函数
Python 允许空字符串的存在,不包含任何字符且长度为 0。例如:
>>> c = '' >>> len(c)
0
len()用于计算字符串含有多少字符。例如:
>>> d = 'abc 轻松熊' >>> len(d)
6
转义字符
我们可以使用“+特殊字符”,实现某些难以用字符表示的效果。比如:换行等。常见的转义字符有这些:
【操作】测试转义字符的使用
>>> a = 'I\nlove\nU'
>>> a
'I\nlove\nU'
>>> print(a)
I
love
U
>>> print('aaabb\cccddd')
aaabbcccddd
字符串拼接
-
可以使用+将多个字符串拼接起来。例如:’aa’+ ’bb’ ==>’aabb’。
(1) 如果+两边都是字符串,则拼接。
(2) 如果+两边都是数字,则加法运算。
(3) 如果+两边类型不同,则抛出异常。 -
可以将多个字面字符串直接放到一起实现拼接。例如:’aa’’bb’==>’aabb’
【操作】字符串拼接操作
>>> a = 'dancer'+'qingsongxiong'
>>> a
'dancerqingsongxiong'
>>> b = 'dancer''qingsongxiong'
>>> b
'dancerqingsongxiong'
字符串复制
使用*可以实现字符串复制。
【操作】字符串复制操作
>>> a = 'Dancer'*3
>>> a
'DancerDancerDancer'
不换行打印
我们前面调用 print 时,会自动打印一个换行符。有时,我们不想换行,不想自动添加换行符。我们可以自己通过参数 end = “任意字符串”。实现末尾添加任何内容:
建立源文件 mypy_06.py:
print("Dancer",end=' ')
print("Dancer",end='##')
print("Dancer")
运行结果:
Dancer Dancer##Dancer
从控制台读取字符串
我们可以使用 input()从控制台读取键盘输入的内容。
>>> myname = input("请输入名字:")
请输入名字:轻松熊喵喵
>>> myname
'轻松熊喵喵'
str()实现数字转型字符串
str()可以帮助我们将其他数据类型转换为字符串。例如:
str(5.20) > ‘5.20’ str(3.14e2)>’314.0’ str(True) ==> ‘True’
当我们调用 print()函数时,解释器自动调用了 str()将非字符串的对象转成了字符串。我们在面向对象章节中详细讲解这部分内容。 使用[]提取字符字符串的本质就是字符序列,我们可以通过在字符串后面添加[],在[]里面指定偏移量,可以提取该位置的单个字符。
正向搜索:
最左侧第一个字符,偏移量是 0,第二个偏移量是 1,以此类推。直到 len(str)-1为止。
反向搜索:
最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str)为止。
【操作】使用[]提取字符串中的字符
>>> a = 'abcdefghijklmnopqrstuvwxyz'
>>> a
'abcdefghijklmnopqrstuvwxyz'
>>> a[0]
'a'
>>> a[3]
'd'
>>> a[26-1]
'z'
>>> a[-1]
'z'
>>> a[-26]
'a'
>>> a[-30]
Traceback (most recent call last):
File "<pyshell#91>", line 1, in <module>
a[-30]
IndexError: string index out of range
replace()实现字符串替换
字符串是“不可改变”的,我们通过[]可以获取字符串指定位置的字符,但是我们不能改变字符串。我们尝试改变字符串中某个字符,发现报错了:
>>> a = 'abcdefghijklmnopqrstuvwxyz' >>> a
'abcdefghijklmnopqrstuvwxyz' >>> a[3]='高' Traceback (most recent call last):
File "<pyshell#94>", line 1, in <module>
a[3]='高' TypeError: 'str' object does not support item assignment
字符串不可改变。但是,我们确实有时候需要替换某些字符。这时,只能通过创建新的字符串来实现。
>>> a = 'abcdefghijklmnopqrstuvwxyz' >>> a
'abcdefghijklmnopqrstuvwxyz' >>> a = a.replace('c','轻')
'ab 轻 defghijklmnopqrstuvwxyz'
整个过程中,实际上我们是创建了新的字符串对象,并指向了变量 a,而不是修改了以前的字符串。 内存图如下:
参考:百战尚学堂 – 高淇老师