《Python语言程序设计》学习笔记
笔记选自《Python语言程序设计》[美]梁勇 著
本篇笔记没有记录用python绘画的turtle库
第8章 更多字符串和特殊方法
- 创建字符串
s1=str()
s2=str("Welcome")
# Python提供了简单语法,通过使用字符串值创建一个字符串
s1=""
s2="Welcom"
一个str对象是不可变的:一旦创建一个字符串对象出来,那么它的内容就不会再改变。
Python使用一个对象来表示具有相同内容的字符串,这对所有不可变对象都是一样的,例如:int是一种不可变类。两个具有相同值的int对象实际上是共享了相同的对象。

-
处理字符串的函数
len(s)返回一个字符串中的字符个数
max(s)、min(s)分别返回字符串s中ASCII码最大和最小的字符 -
下标运算符
[]:
s[index]下标是基于0的,index范围是0到len(s)-1
允许用负数作为下标,它表示相对于字符串末尾字符的位置,确切的位置是通过负数下标和字符串长度相加来获取,s[-1]和s[-1+len(s)]一样,都是字符串的最后一个字符。
字符串是不可变的,不能s[2]='A' -
截取运算符
[start:end]:
通过使用语法s[start:end]返回字符串其中的一段,这一段是从下标start到end-1的一个子串。
起始下标或结束下标可以被忽略,默认起始下标是0,结束下标是最后一个下标。
s="Welcome"
s[ :6] # 返回Welcom
-
连接字符串
+ -
复制字符串
*
s="a"*3则s为"aaa" -
in和not in运算符
使用in或not in操作来测试一个字符串是否在另一个字符串中,返回一个布尔值。 -
比较字符串:
可以使用比较运算符来对字符串进行比较(==、!=、>、<、>=、<=)按字典序比较 -
迭代字符串:
字符串是可迭代的,可以使用for循环来顺序遍历字符串中所有字符
for ch in s:
print(ch)
# 以不同顺序遍历,那么你仍然必须使用下标
for i in range(0,len(s),2):
print(s[i])
- 测试字符串
| 方法 | 解释 |
|---|---|
isalnum():bool | 如果这个字符串中的字符是字母数字且至少有一个字符则返回True |
isalpha():bool | 如果这个字符串中的字符是字母且至少有一个字符则返回True |
isdigit():bool | 如果这个字符串中只含有数字字符则返回True |
isidentifier():bool | 如果这个字符串是Python标识符则返回True |
islower():bool | 这个字符串中所有字符全是小写且至少有一个字符则返回True |
isupper():bool | 这个字符串中的所有字符全是大写且至少有一个字符则返回True |
isspace():bool | 如果这个字符串中只包含空格则返回True |
"2012".isdigit() # 返回True
- 搜索子串
| 方法 | 解释 |
|---|---|
endWith(s1:str):bool | 如果字符串是以子串s1结尾则返回True |
startWith(s1:str):bool | 如果字符串是以子串s1开始则返回True |
find(s1):int | 返回s1在这个字符串的最低下标,不存在则返回-1 |
rfind(s1):int | 返回s1在这个字符串的最高下标,不存在则返回-1 |
count(substring):int | 返回这个子串在字符串中出现的无覆盖的次数 |
- 转换字符串:使用以下方法复制字符串,可以控制字符串复制过程中字母的大小写
| 方法 | 解释 |
|---|---|
capitalize():str | 返回这个复制的字符串并只大写第一个字符 |
lower():str | 返回这个复制的字符串并将所有字母转换为小写 |
upper():str | 返回这个复制的字符串并将所有字母转换为大写 |
title():str | 返回这个复制的字符串并大写每个单词的首字母 |
swapcase():str | 返回这个复制的字符串,将小写字母转换成大写 |
replace(old, new):str | 返回一个新的字符串,它用一个new字符串替换s中所有出现old字符串的地方 |
如前所述,字符串是不可变的。str类中没有方法能改变字符串的内容,这些方法都是创建了新的字符串。
- 删除字符串中的空格
| 方法 | 解释 |
|---|---|
lstrip():str | 返回去掉前端空白字符的字符串 |
rstrip():str | 返回去掉末端空白字符的字符串 |
strip():str | 返回去掉两端空白字符的字符串 |
在输入字符串上应用strip()方法来确保删除输入的末尾任何不需要的字符。
- 格式化字符串
| 方法 | 解释 |
|---|---|
center(width):str | 返回在给定宽度域上居中的字符串副本 |
ljust(width):str | 返回在给定宽度域上左对齐的字符串文本 |
rjust(width):str | 返回在给定宽度域上右对齐的字符串文本 |
format(items):str | 格式化字符串 |
- 运算符重载和特殊方法
Python允许为运算符和函数定义特殊的方法来实现常用的操作。
| 运算符 | 方法 | 描述 |
|---|---|---|
+ | __add__(self, other) | 加法 |
* | __mul__(self, other) | 乘法 |
- | __sub__(self, other) | 减法 |
/ | __truediv__(self, other) | 除法 |
% | __mod__(self, other) | 求余 |
< | __lt__(self, other) | 小于 |
<= | __le__(self, other) | 小于等于 |
== | __eq__(self, other) | 等于 |
!= | __ne__(self, other) | 不等于 |
> | __gt__(self, other) | 大于 |
>= | __ge__(self, other) | 大于等于 |
[index] | __getitem__(self, index) | 下标运算符 |
in | __contains__(self, index) | 检查其成员资格 |
len | __len__(self) | 元素个数 |
str | __str__(self) | 字符串表示 |
s1.__getitem__(0)与s1[0]相同
- 比较运算符(==、!=、<、<=、>、>=)也可以通过使用方法
__cmp__(self, other)来实现。对于两个对象a和b,如果__lt__可用的话,那么a<b就调用a.__lt__(b)。如果不行的话就调用__cmp__方法来决定顺序。

本章总结
- 字符串对象是不可变的,不可以改变它的内容。
- 可以使用Python函数
len、min和max来返回字符串的长度、最大元素和最小元素。 - 可以使用下标运算符
[]来指向字符串中的一个单独的字符。 - 可以使用连接运算符
+来连接两个字符串,使用复制运算符*来复制一个字符串多次,使用截取运算符[: ]来获取子串,而使用运算符in和not in来判断一个字符是否在一个字符串中。 - 使用比较运算符(
==、!=、<、<=、>和>=)比较两个字符串。 - 使用
for循环迭代字符串中的所有字符。 - 可以在字符串对象上使用像
endswith、startswith、isalpha、islower、isupper、lower、upper、find、count、replace和strip这样的函数。 - 可以为重载操作定义特殊方法。
关键术语
| 英文 | 中文 |
|---|---|
| concatenation operator | 连接运算符 |
| index operator | 下标运算符 |
| repetition operator | 复制运算符 |
| iterable | 可迭代的 |
| operator overloading | 运算符重载 |
| slicing operator | 截取运算符 |
本文详细介绍了Python中字符串的创建、处理函数、下标与截取、连接与复制、字符查找与替换、格式化以及运算符重载等特性,强调了字符串的不可变性,并列举了相关方法和例子。
1063

被折叠的 条评论
为什么被折叠?



