《Python编程快速上手——让繁琐工作自动化》第六章

第6章 字符串操作

6.1 处理字符串

6.1.2 -3双引号和转义字符

spam = "That is Alice's cat."

6.1.4 原始字符串

可以在字符串开始的引号之前加上r,使它成为原始字符串。“原始字符串”完全忽略所有的转义字符,打印出字符串中所有的倒斜杠。

>>> print(r'That is Carol\'s cat.')
That is Carol\'s cat.

6.1.5 用三重引号的多行字符串

虽然可以用\n转义字符将换行放入一个字符串,但使用多行字符串通常更容易。在Python中,多行字符串的起止是3个单引号或3个双引号。“三重引号”之间的所有引号、制表符或换行,都被认为是字符串的一部分。Python的代码块缩进规则不适用于多行字符串。

print('''Dear Alice,

Eve's cat has been arrested for catnapping, cat burglary, and extortion.

Sincerely,
Bob''')

6.1.6 多行注释

虽然井号字符(#)表示这一行是注释,但多行字符串常常用作多行注释。

"""This is a test Python program.
Written by Al Sweigart al@inventwithpython.com

This program was designed for Python 3, not Python 2.
"""

def spam():

6.1.7 字符串下标和切片

字符计数包含了空格和感叹号,所以'Hello world!'有12个字符,H的下标是0,!的下标是11。

>>> spam = 'Hello world!'
>>> spam[0]
'H'
>>> spam[4]
'o'
>>> spam[-1]
'!'
>>> spam[0:5]
'Hello'
>>> spam[:5]
'Hello'
>>> spam[6:]
'world!'

字符串切片并没有修改原来的字符串。可以从一个变量中获取切片,记录在另一个变量中。

6.1.8 字符串的in和not in操作符

用in或not in连接两个字符串得到的表达式,将求值为布尔值True或False。

>>> 'Hello' in 'Hello World'
True
>>> 'Hello' in 'Hello'
True
>>> 'HELLO' in 'Hello World'
False
>>> '' in 'spam'
True
>>> 'cats' not in 'cats and dogs'
False

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,如果字符串仅包含以大写字母开头、后面都是小写字母的单词。

>>> 'This Is Title Case'.istitle()
True

6.2.3 字符串方法startswith()和endswith()

startswith()和endswith()方法返回True,如果它们所调用的字符串以该方法传入的字符串开始或结束。否则,方法返回False。

6.2.4 字符串方法join()和split()

join()方法在一个字符串上调用,参数是一个字符串列表,返回一个字符串。返回的字符串由传入的列表中每个字符串连接而成。

>>> ', '.join(['cats', 'rats', 'bats'])
'cats, rats, bats'
>>> ' '.join(['My', 'name', 'is', 'Simon'])
'My name is Simon'
>>> 'ABC'.join(['My', 'name', 'is', 'Simon'])
'MyABCnameABCisABCSimon'

join()方法是针对一个字符串而调用的,并且传入一个列表值(很容易不小心用其他的方式调用它)。split()方法做的事情正好相反:它针对一个字符串调用,返回一个字符串列表。

>>> 'My name is Simon'.split()
['My', 'name', 'is', 'Simon']

默认情况下,字符串'My name is Simon'按照各种空白字符分割,诸如空格、制表符或换行符。这些空白字符不包含在返回列表的字符串中。也可以向split()方法传入一个分割字符串,指定它按照不同的字符串分割。

>>> 'MyABCnameABCisABCSimon'.split('ABC')
['My', 'name', 'is', 'Simon']
>>> 'My name is Simon'.split('m')
['My na', 'e is Si', 'on']

6.2.5 用rjust()、ljust()和center()方法对齐文本

rjust()和ljust()字符串方法返回调用它们的字符串的填充版本,通过插入空格来对齐文本。这两个方法的第一个参数是一个整数长度,用于对齐字符串。

>>> 'Hello'.rjust(10)
'      Hello'
>>> 'Hello'.rjust(20)
'                   Hello'
>>> 'Hello World'.rjust(20)
'           Hello World'
>>> 'Hello'.ljust(10)
'Hello      '

'Hello'.rjust(10)是说我们希望右对齐,将'Hello'放在一个长度为10的字符串中。'Hello'有5个字符,所以左边会加上5个空格,得到一个10个字符的字符串,实现'Hello'右对齐。

rjust()和ljust()方法的第二个可选参数将指定一个填充字符,取代空格字符。

>>> 'Hello'.rjust(20, '*')
'***************Hello'
>>> 'Hello'.ljust(20, '-')
'Hello---------------'

center()字符串方法与ljust()与rjust()类似,但它让文本居中,而不是左对齐或右对齐。

>>> 'Hello'.center(20)
'       Hello '
>>> 'Hello'.center(20, '=')
'=======Hello========'

6.2.6 用strip()、rstrip()和lstrip()删除空白字符

strip()字符串方法将返回一个新的字符串,它的开头或末尾都没有空白字符。lstrip()和rstrip()方法将相应删除左边或右边的空白字符。

有一个可选的字符串参数,指定两边的哪些字符应该删除。

>>> spam = 'SpamSpamBaconSpamEggsSpamSpam'
>>> spam.strip('ampS')
'BaconSpamEggs'

向strip()方法传入参数'ampS',告诉它在变量中存储的字符串两端,删除出现的a、m、p和大写的S。传入strip()方法的字符串中,字符的顺序并不重要:strip('ampS')做的事情和strip('mapS')或strip('Spam')一样。

6.2.7 用pyperclip模块拷贝粘贴字符串

除了Python自带的标准库,其他开发者写了一些自己的模块,进一步扩展了Python的功能。安装第三方模块的主要方法是使用Python的pip工具。这个工具从Python软件基金会的网站https://pypi.python.org/安全地下载Python模块,并安装到您的计算机上。PyPI或Python包索引,就像是Python模块的免费应用程序商店。

>>> import pyperclip
>>> pyperclip.copy('Hello world!')
>>> pyperclip.paste()
'Hello world!'

6.3 项目:口令保管箱

6.4 项目:在Wiki标记中添加无序列表

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值