文本是程序需要处理的最常见的数据格式。
1. 处理字符串
1) 双引号
如果字符串中只包含单引号,那么字符串以双引号开始, Python 就知道单引号是字符串的一部分,而不是表示字符串的结束。示例:
>>> 'This is Alice's cat'
SyntaxError: invalid syntax
>>> "This is Alice's cat"
"This is Alice's cat"
2) 转义字符
转义字符包含一个反斜杠(\),紧跟着是想要添加到字符串的字符。示例:
>>> 'This is Alice\'s cat'
"This is Alice's cat"
常见的转义字符如下图所示:
示例:
>>> print('This\nis\tAlice\'s \"cat\"')
This
is Alice's "cat"
3) 原始字符串
可以在字符串开始的引号前加上r,使它成为原始字符串。“原始字符串”忽略所有的转义字符,打印出字符串中所有的反斜杠。示例:
>>> print(r'This is Carol\'s cat')
This is Carol\'s cat
4) 用三重引号的多行字符串
在 Python 中,多行字符串的起止是 3 个单引号或 3 个双引号。“三重引号”之间的所有引号、制表符或换行等,都被认为是字符串的一部分。Python的代码库缩进规则不适用于多行字符串。示例:
print('''Dear Alice,
Eve's cat has been arrested for catnapping, cat burglary, and extortion.
Sincerely,
Bob''')
输出结果:
Dear Alice,
Eve's cat has been arrested for catnapping,cat burglary, and extortion.
Sincerely,
Bob
5) 多行注释
Python中使用#字符实现单行注释,而多行注释则可以使用三重引号来实现。示例:
def spam():
"""This is a multiline comment to help
explain what the spam() function does."""
print('Hello!')
输出结果:
>>> spam()
Hello!
6) 字符串下标和切片
字符串和列表一样,使用下标和切片。可以将字符串看成一个列表,字符串中的每个字符都是一个表项。示例:
>>> spam = "Hello World!"
>>> spam[0]
'H'
>>> spam[100]
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
spam[100]
IndexError: string index out of range
>>> spam[1:5]
'ello'
>>> spam[5:-20]
''
7) 字符串的 in 和 not in 操作符
像列表一样,in和not in可以用于判断某个字符串是否存在另一个字符串中。如果存在返回True,否则返回False(精确匹配,区分大小写)。示例:
>>> 'Hello' in 'Hello World'
True
>>> 'Hello' in 'He ll oW or ld'
False
2. 有用的字符串方法
1) upper()、lower()、isupper()和islower()
upper()和 lower()字符串方法返回一个新字符串,其中原字符串的所有字母都被相应地转换为大写或小写。字符串中非字母字符保持不变。示例:
>>> spam = 'Hello World!'
>>> spam = spam.upper()
>>> spam
'HELLO WORLD!'
>>> spam = spam.lower()
>>> spam
'hello world!'
如果字符串至少有一个字母,并且所有字母都是大写或小写,isupper()和islower()方法就会相应地返回布尔值 True。否则,该方法返回 False。示例:
>>> print('Hello World!'.isupper())
False
>>> print('HELLO WORLD!'.isupper())
True
>>> print(''.isupper())
False
2) isX 字符串方法
下面是一些常用的 isX 字符串方法:
isalpha()返回 True,如果字符串只包含字母,并且非空;
isalnum()返回 True,如果字符串只包含字母和数字,并且非空;
isdecimal()返回True,如果字符串只包含整数字符,并且非空;
isspace()返回 True,如果字符串只包含空格、制表符和换行,并且非空;
istitle()返回True,如果字符串仅包含以大写字母开头、后面都是小写字母的单词。
示例:
>>> 'hello'.isalpha()
True
>>> 'hello123'.isalpha()
False
>>> 'hello123'.isalnum()
True
>>> 'hello'.isalnum()
True
>>> '123'.isdecimal()
True
>>> ' '.isspace()
True
>>> 'This Is Title Case'.istitle()
True
>>> 'This Is Title Case 123'.istitle()
True
>>> 'This Is not Title Case'.istitle()
False
>>> 'This Is NOT Title Case Either'.istitle()
False
3) 字符串方法 startswith()和 endswith()
startswith()和 endswith()方法返回 True,如果它们所调用的字符串以该方法传入的字符串开始或结束。否则,方法返回False。示例:
>>> 'Hello world!'.startswith('Hello')
True
>>> 'Hello world!'.endswith('world!')
True
>>> 'abc123'.startswith('abcdef')
False
>>> 'abc123'.endswith('12')
False
4) 字符串方法 join()和 split()
如果有一个字符串列表,需要将它们连接成一个单独的字符串,那么join()方法就很有用。 调用join()方法的字符串被插入到列表参数中每个字符串的中间。示例:
>>> ', '.join(['cats', 'rats', 'bats'])
'cats, rats, bats'
>>> ' '.join(['My', 'name', 'is', 'Simon'])
'My name is Simon'
>>> 'ABC'.join(['My', 'name', 'is', 'Simon'])
'MyABCnameABCisABCSimon'
split()方法和join()方法正好相反。它针对一个字符串调用,返回一个字符串列表。如果split()方法中什么参数都不传,那么按照空白符(如空格,制表符或换行符)进行切割。也可以向split()传入一个参数,按照指定的参数进行切割。示例:
>>> 'My name is Simon!'.split()
['My', 'name', 'is', 'Simon!']
>>> 'My name is Simon!'.split('m')
['My na', 'e isSi', 'on!']
5) 用 rjust()、ljust()和 center()方法对齐文本
rjust()和ljust()方法返回调用他们的字符串的填充版本。第一个参数是一个必填整数,表示填充至长度n。如果指定的长度小于字符串的长度则返回原字符串。,rjust()表示向右对齐,ljust()表示向左对齐。rjust()和 ljust()方法的第二个可选参数将指定一个填充字符,取代空格字符。示例:
>>> 'Hello'.rjust(20,'*')
'***************Hello'
>>> 'Hello'.ljust(20,'*')
'Hello***************'
>>> 'Hello'.rjust(20)
' Hello'
center()与rjust()和ljust()类似,但是表示文本居中。示例:
>>> 'Hello'.center(20)
' Hello '
>>> 'Hello'.center(20,'*')
'*******Hello********'
6) 用strip()、rstrip()和lstrip()删除字符
strip()、rstrip()和lstrip()分别表示删除开头和末尾,删除右边,删除左边的空白字符(空格,制表符和换行符)。
>>> spam = ' Hello World! '
>>> spam.strip()
'Hello World!'
>>> spam.rstrip()
' Hello World!'
>>> spam.lstrip()
'Hello World! '
这三个方法有一个可选的字符参数,指定哪些字符应该删除。可选参数中字符的顺序并不重要。
>>> spam = 'SpamSpamBaconSpamEggsSpamSpam'
>>> spam.strip('ampS')
'BaconSpamEggs'
7) 用 pyperclip 模块拷贝粘贴字符串
pyperclip 模块有 copy()和 paste()函数,可以向计算机的剪贴板发送文本,或从它接收文本。将程序的输出发送到剪贴板,使它很容易粘贴到邮件、文字处理程序或其他软件中。pyperclip 模块不是 Python 自带的,需安装。
使用pip安装pyperclip模块的安装:
安装成功后该模块一般会被放置在:
python安装目录下的…\Lib\site-packages\(以下以自己电脑为例)
代码示例:
>>> import pyperclip
>>> pyperclip.copy('HelloWorld!')
>>> pyperclip.paste()
'Hello World!'