|
目录
处理字符串
如何在字符串中输入单引号
1、双引号?
?2、转义字符
3、原始字符串
?用三重引号的多行字符串
?多行注释?
?字符串下标和切片
?字符串的in和not in 操作符
?有用的字符串方法
字符串方法upper()、lower()、isupper()和islower()
upper()和lower()方法
?islower()、isupper()检测字符串是否全为小写、大写
?isX字符串方法
字符串方法startswith()和endswith()
?字符串方法join()和split()
join()方法:
split()方法:
?用rjust()、ljust()和center()方法对齐文本
?用strip()、rstrip()和lstrip()删除空白字符
?项目练习:密码保管箱
项目练习:在wiki标记中添加无序列表
处理字符串
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)
|