数据类型

–列表
–字符串
–元组
–字典

字符串

列表并不是唯一表示序列值的数据类型。字符串和列表实际上很相似,只要你认为字符串是单个文本字符的列表。对列表的许多操作,也可以作用于字符串:按下标取值、切片、用于 for 循环、用于 len(),以及用于 in 和 not in 操作符。

>>>name = 'sophie'
>>>name[0] 
's'
>>>name[-2]
'i'
>>>name[0:4]
'soph'
>>>'sop' in name
True
>>>'b' in name
False
>>>for i in name:
				print('* * *' + i + '* * *')
* * * s * * *
* * * o * * *
* * * p * * *
* * * h * * *
* * * i * * *
* * * e * * *

小刀走了,凉面好吃
紫苏叶

但列表和字符串在一个重要的方面是不同的。列表是“可变的”数据类型,它的值可以添加、删除或改变。但是,字符串是“不可变的”,它不能被更改。尝试对字符串中的一个字符重新赋值,将导致 TypeError 错误。

>>>name = 'sophie a cat'
>>>name [7] = the
TypeError: 'str' object does not support item assignment

“改变”一个字符串的正确方式,是使用切片和连接。构造一个“新的”字符
串,从老的字符串那里复制一些部分。在交互式环境中输入以下代码:

>>> name = 'sophie a cat'
>>> newName = name[0:7] + 'the' + name[8:12]
>>> name
'sophie a cat'
>>> newName
'sophie the cat'

1.字符串方法 upper()、lower()、isupper()和 islower()

upper()和 lower()字符串方法返回一个新字符串,其中原字符串的所有字母都被相应地转换为大写或小写。字符串中非字母字符保持不变。

>>>oppo = 'Hello world !'
>>>	oppo = oppo.upper()
>>>oppo
'HELLO WORLD!'
>>>oppo = oppo.lower()
>>>oppo
'hello world !'
>>>oppo = oppo.lower().upper()
>>>oppo
'HELLO WORLD!'

如果字符串至少有一个字母,并且所有字母都是大写或小写,isupper()和
islower()方法就会相应地返回布尔值 True。否则,该方法返回 False。

2.isX 字符串方法
除了 islower()和 isupper(),还有几个字符串方法,它们的名字以 is 开始。这些方法返回一个布尔值,描述了字符串的特点。下面是一些常用的 isX 字符串方法:
 isalpha()返回 True,如果字符串只包含字母,并且非空;
 isalnum()返回 True,如果字符串只包含字母和数字,并且非空;
 isdecimal()返回 True,如果字符串只包含数字字符,并且非空;
 isspace()返回 True,如果字符串只包含空格、制表符和换行,并且非空;
 istitle()返回True,如果字符串仅包含以大写字母开头、后面都是小写字母的单词。
3.字符串方法 startswith()和 endswith()
startswith()和 endswith()方法返回 True,如果它们所调用的字符串以该方法传入的字符串开始或结束。否则,方法返回 False。

>>>‘hello world’.startswith('hello')
True
>>>'hello world'.endswith('world')
True

4.字符串方法 join()和 split()
join()方法在一个字符串上调用,参数是一个字符串列表,返回一个字符串。返回的字符串由传入的列表中每个字符串连接而成。调用join()方法的字符串,被插入到列表参数中每个字符串的中间。例如,如果在’, ‘字符串上调用 join([‘cats’, ‘rats’, ‘bats’]),返回的字符串就是’cats, rats, bats’。

>>>', '.join(['my','name','is','sophie'])
'my, name, is, sophie'

split()方法做的事情正好相反:它针对一个字符串调用,返回一个字符串列表。

>>>'my name is sophie'.split()
['my','name','is','sophie']

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

rjust()和 ljust()字符串方法返回调用它们的字符串的填充版本,通过插入空格来对齐文本。

>>>'hello'.rjust(10)
'     hello'
>>>#将'Hello'放在一个长度为 10 的字符串中。'Hello'有 5 个字符
所以左边会加上 5 个空格,得到一个 10 个字符的字符串,实现'Hello'右对齐。
>>>'hello'.ljust(10,'*')
'hello*****'
>>>'Hello'.center(20)
'       Hello        '

6.用 strip()、rstrip()和 lstrip()删除空白字符
strip()字符串方法将返回一个新的字符串,它的开头或末尾都没有空白字符。
lstrip()和 rstrip()方法将相应删除左边或右边的空白字符。
7.用 pyperclip 模块拷贝粘贴字符串
pyperclip 模块有 copy()和 paste()函数,可以向计算机的剪贴板发送文本,或从它接收文本。

>>>import pyperclip
>>>pyperclip.copy('hello')
>>>pyperclip.paste()
'hello'

当然,如果你的程序之外的某个程序改变了剪贴板的内容,paste()函数就会返回它。

>>>pyperclip.paste()
'当然,如果你的程序之外的某个程序改变了剪贴板的内容,paste()函数就会返回它。'