《Python语言程序设计》第八章学习笔记

《Python语言程序设计》学习笔记

笔记选自《Python语言程序设计》[美]梁勇 著
本篇笔记没有记录用python绘画的turtle库


第8章 更多字符串和特殊方法

  • 创建字符串
s1=str()
s2=str("Welcome")
# Python提供了简单语法,通过使用字符串值创建一个字符串
s1=""
s2="Welcom"

一个str对象是不可变的:一旦创建一个字符串对象出来,那么它的内容就不会再改变。
Python使用一个对象来表示具有相同内容的字符串,这对所有不可变对象都是一样的,例如:int是一种不可变类。两个具有相同值的int对象实际上是共享了相同的对象。
《Python语言程序设计》第八章学习笔记_第1张图片

  • 处理字符串的函数
    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"

  • innot in运算符
    使用innot 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就调用a.__lt__(b)。如果不行的话就调用__cmp__方法来决定顺序。

本章总结

  1. 字符串对象是不可变的,不可以改变它的内容。
  2. 可以使用Python函数lenminmax来返回字符串的长度、最大元素和最小元素。
  3. 可以使用下标运算符[]来指向字符串中的一个单独的字符。
  4. 可以使用连接运算符+来连接两个字符串,使用复制运算符*来复制一个字符串多次,使用截取运算符[: ]来获取子串,而使用运算符innot in来判断一个字符是否在一个字符串中。
  5. 使用比较运算符(==!=<<=>>=)比较两个字符串。
  6. 使用for循环迭代字符串中的所有字符。
  7. 可以在字符串对象上使用像endswithstartswithisalphaislowerisupperlowerupperfindcountreplacestrip这样的函数。
  8. 可以为重载操作定义特殊方法。

关键术语

英文 中文
concatenation operator 连接运算符
index operator 下标运算符
repetition operator 复制运算符
iterable 可迭代的
operator overloading 运算符重载
slicing operator 截取运算符

你可能感兴趣的:(Python,学习,python,开发语言)