![Python数据分析从小白到专家](https://wfqqreader-1252317822.image.myqcloud.com/cover/745/38209745/b_38209745.jpg)
3.2.4 Python的字符串
字符串类型不仅是在Python中,在各种各样的编程语言里也很常见。在Python中可以用双引号和单引号迅速地创建一个字符串。不同于C/C++,Python并不区分对待“字符串”和“单个字符”,所以在Python中单引号和双引号的作用是一样的。在Python中常见的字符串处理方法有两种:一种是传统的、常见的ASCII编码;另一种是Unicode编码。实际上,无论是Unicode编码处理方法还是ASCII编码处理方法,在Python中都是由抽象类basestring继承而来的。先来介绍字符串的基本操作,即创建、删除、更改,示例如下:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_51_2.jpg?sign=1739286632-zvAvgeaq0FyrpSar1zzd0KiZotwnoCjc-0-ac6f23ae8d168c24dc0d2a040139b82a)
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_52_1.jpg?sign=1739286632-vJ8iR4pJxbDPYq7yR3iyCok7jniN6neE-0-8049f091e49a6cd38d65dd3b4f7327fe)
输出结果:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_52_2.jpg?sign=1739286632-B5cItgBu4PVRTTVa0AeyCr6CcHVt3Xiq-0-bc67eda1ca8fefd2b59c0cb22cbb6f5b)
在这个示例中,字符串的更改操作与列表的类似;一直使用的绘制分隔符的语句也用到了相应的“*”操作,如下所示。
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_52_3.jpg?sign=1739286632-XFjSZtpB4PgdQa32sEz8acrFV9NTUriw-0-f7e85c915a0f5d9379e3f3454eb06271)
输出结果:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_52_4.jpg?sign=1739286632-GOVVfLisaGqZhSeEmb0DJEy9oDOhmmqI-0-ea855f2e4b14324f8f0e0689d76ca301)
不过,从上面的示例中可以看出,想要修改一个字符串中间的部分,是不可以直接像列表那样用赋值符号“=”直接改动的,我们可以用“+”符号连接未修改的部分和修改的内容来实现,同时使用了类似列表中切片操作的字符串切片,相关代码如下所示。
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_52_5.jpg?sign=1739286632-WvOU3KvVLQbYdqC1K1Bpju9WRPZA8KI8-0-ee34cb045944708c8f3a46bf34ceaaf9)
用户可以用del语句手动删除创建的字符串,但实际上没必要这样做,因为当程序结束时,Python解释器会自动释放创建的字符串,这也是Python比C++更优越的地方。
众所周知,Python和其他语言一样拥有合法标识符,即以字母或者下画线开头,由字母、下画线和数字组成,而且不是保留字和已有定义的,才可以作为变量名称使用。下面的代码用于判断一个字符串能否作为Python的合法标识符。
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_53_1.jpg?sign=1739286632-g9s8VFEnrhyLTn3qFvDrd1WsfNwVcHj7-0-cc5e3b1056f16543640cd6636bb84cb2)
输出结果:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_53_2.jpg?sign=1739286632-Kf8MGw8d4yCu2lhU5GfCBE034DiTU0Ep-0-a454f5fae1d04ec6a2d966f05ce0de05)
首先,导入了字母集合和下画线的组合及数字集合,分别命名为alphas和nums,这两个变量存放了所有字母的集合(大小写都有)和数字的集合(0~9),以方便下一步的判断。用于导入集合的代码如下所示。
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_54_1.jpg?sign=1739286632-ltm7GCwXRDiQmDaWh9tcupMacrtxRdCM-0-921d8fb2365e857efc8d454d97861442)
while True语句使得只要用户不手动中止程序,程序就会一直运行。myInput=input('键入字符串')语句用于键入字符串。下面的循环语句用in操作判断首字母是否是下画线或字母:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_54_2.jpg?sign=1739286632-5rRa5fvdGmDT4xCUJdzY6eyy5jraPxMa-0-717d69246262f30a885be6e08456b0fa)
elifTrue语句用于遍历除开头外剩余的字符串,allChar是由alphas和nums组成的,包含下画线、大小写字母及数字(0~9)。下面这段代码用于判断除开头外剩余的字符串是否是下画线、字母或数字。
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_54_3.jpg?sign=1739286632-0GxnAYEwBwXhhjoKDrAIFjGLvC48z3lV-0-cdaa16d8efd658c469cdd09dc5979c4c)
Python与C/C++一样,拥有格式化操作符,如表3-7所示。
表3-7 Python的格式化操作符
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_54_4.jpg?sign=1739286632-zgDtujzEGIapTrDZOpSwysenRe5dx0q7-0-5d3775ae53b199d32cfd64f14ff9a4e8)