目录
字符串方法upper()、lower()、isupper()和islower()
islower()、isupper()检测字符串是否全为小写、大写
用rjust()、ljust()和center()方法对齐文本
用strip()、rstrip()和lstrip()删除空白字符
处理字符串
Python提供写入、打印和访问字符串的一些方法
如何在字符串中输入单引号
字符串以单引号开始和结束,但是如何在字符串中内使用单引号呢?
可以看到直接在字符串中使用单引号会报错,可使用如下方法在字符串中使用单引号:
1、双引号
2、转义字符
\' 单引号
\" 双引号
\n 换行符
\t 制表符
\\ 反斜杠
3、原始字符串
在字符串引号之前加r,就表示原始字符串,原始字符串忽略有所的转义,打印出字符串内所有的内容。
用三重引号的多行字符串
使用换行符可以使字符串进行换行,但是使用多行字符串换行更加直观、容易。
必须加转义字符\n才能达到相同的效果
否则就会报错呀
多行注释
三重引号也可以用作多行注释
# 表示一行注释
字符串下标和切片
spam[0:5] 包含spam[0]到spam[4]的全部内容
字符串切片并没有修改原来的字符串,但可以将切片保存在另一个变量里面
字符串的in和not in 操作符
用in和not in连接两个字符串得到的表达式,将求值为布尔值True或False。
有用的字符串方法
字符串方法upper()、lower()、isupper()和islower()
upper()和lower()方法
1、返回一个新的字符串,不改变原来的字符串
2、将原来字符串中所有的字母转换成大小写
3、非字母字符不变
作用:用户输入的时候,有写用户输入大写、有些输入小写,使用upper()和lower()方法就可以同一大小写,然后带入程序进行比对。
没有加大小写转换,运行就报错
加入大小写转换
print('How are you?')
answer=input()
if answer.lower()=='great':
print('I feel great too')
else:
print('I hope you happly,if you can play computergame')
islower()、isupper()检测字符串是否全为小写、大写
1、字符串至少有一个字母
2、全为大写、小写才会返回True
大小写混合为假
没有字母也返回False
全大写、全小写为真
isX字符串方法
isalpha():字符串只包含字母,非空
isalnum():只包含字母和数字,非空
isdecimal():只包含数字,非空
isspace():只包含空格、制表符、换行,非空
istitle():字符串仅包含以大写字母开头、后面都是小写字母的单词。
作用:验证用户输入
while True:
print('please input age')
age=input()
if str(age).isdecimal():
break
print('please input age again')
while True:
print('please input password')
password=input()
if password.isalnum():
break
print('password can only have letters and numbers.')
字符串方法startswith()和endswith()
判断字符串开头是啥、结尾是啥
print('hello world'.startswith('hell'))
print('hello world!'.endswith('world!'))
print('abc123'.startswith('abc'))
print('abc123'.endswith('3'))
print('hello world'.startswith('hello world'))
字符串方法join()和split()
join()方法:
1、在字符串上调用
2、参数是一个字符串列表
3、返回一个字符串,返回的字符串由传入的列表中每个字符串连接而成
a=['123','abc','456','def']
print('.'.join(a))
print('----'.join(a))
print('- —— -'.join(a))
print('ABC'.join(a))
split()方法:
1、针对一个字符串调用
2、返回一个字符串列表
用rjust()、ljust()和center()方法对齐文本
就是左对齐、右对齐、居中对齐,在Word里面对齐都是空格,在Python里面可以自定义对齐填充的字符。
左对齐在字符串右面填充字符:
由于字符串a长度为11,因此会填充19个-,和9个*,本人亲数
右对齐:
居中对齐:
作用:打印表格式数据,可以留出正确的空格。也可以使输出更加好看。
def printPicnic(itemsDict,l,r):
for k,v in itemsDict.items():
print(k.ljust(l,'.')+str(v).rjust(r))
picnicItems={'apples':4,'banana':7,'cups':9}
printPicnic(picnicItems,20,2)
用strip()、rstrip()和lstrip()删除空白字符
删除字符串左边、右边或两边的空白字符(空格、制表符\t、换行符\n)
strip()返回一个新的字符串
rstrip()和lstrip()在原字符串上操作,删除左边或右边的空白字符
这些方法有个可选的字符串参数,指定两边的那些字符应该删除。
可以看到删除了字符串两边的123,也可以看到,与传入的字符串的顺序无关。
用pyperclip模块拷贝粘贴字符串
pyperclip模块有copy()和paste()函数,就是电脑上的复制粘贴,可以向计算机的剪贴板发送文本,或者从剪贴板接收文本。
如果程序之外的某个程序改变了剪贴板的内容,paste()函数就会返回它。我直接在电脑上复制一段话,调用paste()方法,就会直接返回复制的话:
项目练习:密码保管箱
#! python3
# pw.py -An insecure password locker program
import sys,pyperclip
PASSWORD={'email':'123456','blog':'shy014','luggage':'qwer1234'}
if len(sys.argv)<2:
print('Usage:py -3 pw.py [account] - copy account password')
sys.exit()
account=sys.argv[1]
if account in PASSWORD:
pyperclip.copy(PASSWORD[account])
print('password for'+account+'clied to clipboard.')
else:
print('There is no account named'+account)
注意:1、sys.argv[0]是程序的名称,在这个程序中就是pw.py
项目练习:在wiki标记中添加无序列表
就是将你复制下的东西,变成无序列表(每行前面加*号),然后再复制到剪贴板中。
#! python3
# bulletPonitAdder.py - Adds * in every line heads
import pyperclip
text=pyperclip.paste()
lines=text.split('\n')
for i in range(len(lines)):
lines[i]='*'+lines[i]
text='\n'.join(lines)
print(text)
pyperclip.copy(text)