第六章 字符串操作
6.1 处理字符串
6.1.1 字符串字面量
6.1.2 双引号
- 在字符串中既要使用单引号又要使用双引号时,就要使用转义字符
6.1.3 转义字符
表 6-1 转义字符
转义字符 | 打印 |
\’ | 单引号 |
\” | 双引号 |
\t | 制表符 |
\n | 换行符 |
\\ | 倒斜杠 |
6.1.4 原始字符串
- 在字符串开始的引号前加上r,使其成为原始字符串
- 原始字符串将忽略全部转义字符
6.1.5 用三重引号的多行字符串
- 多行字符串的起止是3个单引号或3个双引号
- “三重引号”之间的所有引号、制表符和换行,都被认为是该字符串的一部分
- Python代码块缩进规则不适用于多行字符串
6.1.6 多行注释
#打印出单词"Hello World"
print("Hello World")
'''
这是注释
'''
print("Hello Python")
"""
这也是注释
"""
- 注释不能写在代码行的后面,会报语法错误。可跨行但开始时应独立成行书写。这一点与C不同。以上写法中,只有第三种正确。
- 但如果采用#的注释方法,则可以在代码行后直接注释。但此时并不支持跨行注释。
6.1.7 字符串下标和切片
- 应用:求子串
6.1.8 字符串的 in 和 not in 操作符
- 测试第一个字符串(精准匹配,区分大小写)是否在第二个字符串中
6.2 有用的字符串方法
6.2.1 字符串方法upper()、lower()、isupper() 和 islower()
- upper()、lower() 将返回一个新字符串(不改变原有字符串),所有字母被转换为大写或小写,非字母字符保持不变
- 若字符串至少有一个字母,并且所有字母都是大写或小写,isupper() 和 islower() 将返回相应的True。否则,返回False。
6.2.2 isX 字符串方法
- isalpha() 返回 True,如果字符串只包含字母,且非空
- isalnum() 返回 True,如果字符串只包含字母和数字,且非空
- isdecimal() 返回 True,如果字符串只包含数字,且非空
- isspace() 返回 True,如果字符串只包含空格、制表符和换行,且非空
- istitle() 返回 True,如果字符串只包含以大写字母开头、后面全是小写字母的单词
6.2.3 字符串方法 startswith() 和 endswith()
- startswith() 和 endswith()返回True,如果它们所调用的字符串以该方法传入的参数(字符串)为开始或结束,否则,返回False
6.2.4 字符串方法 join() 和 split()
- join() 在一个字符串上调用,参数是一个字符串列表,返回由参数中每个字符串连接而成的字符串
- 调用 join() 的字符串将被插入到列表参数的每个字符串中间
- split() 针对一个字符串调用,返回字符串列表
- 默认情况下,调用split()的字符串按照各种空白符号(空格、制表符、换行符)分割,空白符号并不包含在返回的字符串列表中
- 可向split()传入一个分割字符串
6.2.5 用 rjust()、ljust() 和 center() 方法对齐文本
- rjust() 右对齐,左边为填充字符, 参数1:总长度 参数2:填充字符,取代空格
- ljust() 左对齐,右边为填充字符, 参数1:总长度 参数2:填充字符,取代空格
- center() 居中对齐,两边为填充字符, 参数1:总长度 参数2:填充字符,取代空格
def printPic(item,leftWid,rightWid):
print('PICNIC ITEMS'.center(leftWid+rightWid,'-'))
for i,j in item.items():
print(i.ljust(leftWid,'.')+str(j).rjust(rightWid,'.'))
picItems = {'sandwiches':4,'apple':12,'cup':4,'cookies':800}
printPic(picItems,12,5)
printPic(picItems,20,10)
6.2.6 用 strip()、rstrip() 和 lstrip() 删除空白字符
- strip():删除两边(开头和结尾) rstrip() :删除右边 lstrip() :删除左边
- 可选字符串参数:指定删除那些字符(与顺序无关,不是字符串)
6.2.7 用 pyperclip 模块拷贝粘贴字符串
6.3 项目:口令保管箱
第1步:程序设计和数据结构
第2步:处理命令行参数
第3步:复制正确的口令
#! python3
# pw.py - An insecure password locker program.
PASSWORD = {'email':'uefbjwuyr487u348wahe829efaiui',
'blog':'fwiuehq89q2euj920qeioqw',
'luggage':'12345'}
import sys
if len(sys.argv) < 2:
print('Usage: python pw.py [account] - copy account password')
sys.exit()
account = sys.argv[1]
if account in PASSWORD:
pyperclip.copy(PASSWORD[account])
print('Password for '+account+' copied to clipboard.')
else:
print('There is no account named '+account)
6.4 项目:在 Wiki 标记中添加无序列表
第1步:从剪贴板中复制和粘贴
第2步:分离文本中的行,并添加星号
第3步:连接修改过的行
#! python3
import pyperclip
text = pyperclip.paste()
lines = text.split('\n')
for i in range(len(lines)):
lines[i] = '* ' + lines[i]
text = '\n'.join(lines)
pyperclip.copy(text)
- 复制以下内容:
第六章 字符串操作
6.1 处理字符串
6.1.1 字符串字面量
6.1.2 双引号
- 运行Python脚本:
- 粘贴得到结果:
* 第六章 字符串操作
*
* 6.1 处理字符串
*
* 6.1.1 字符串字面量
*
* 6.1.2 双引号
6.5 小结
6.6 习题
6.7 项目实践
表格打印