
从安装开始,安装教程不必废话,整理了pip常用的一些命令:
pip常用命令:
pip list # 查看pip下有哪些模块
pip install selenium # 安装selenium
pip install -U selenium # 升级selenium到最新版
pip uninstall selenium # 卸载selenium字符串查找常用 find() 函数。
字符串替换常用 replace() 函数。它用于临时打印、创建新对象,对原字符串无影响
words = 'Hello World!'
print(words.find('World')) # 查询'World'在字符串中第一次出现的索引位置,如果未找到就返回-1
print(words.replace('World', 'WelYan')) # 将字符串中'World'替换成'WelYan'输出结果为:
6
Hello WelYan!字符串分割常用 split() 函数。括号中如果不传参数,默认以空格作为分隔符。
与之对应的,拼接时可以用 join() 函数,它的功能正好与 split() 函数相反,但是似乎用的不多。
字符串的拼接常用 + 号,此时需要自己留好空格,否则会挤成一团。
备注:最后一行的拼接方式只在 print() 打印时使用,它会自动插入空格,不需要手动设置空格。
words = 'Hello World!'
print(words.split('l')) # 以'l'为分隔符,拆分字符串存入一个列表,返回列表,不传默认为空格
print('l'.join(['He', '', 'o Wor', 'd!'])) # 以'l'为连接,把列表中元素连接为一个字符串
print('Hello ' + 'World' + '!') # 使用 + 号拼接字符串,需要自己设定好空格
print('Hello', 'World', '!') # 使用英文逗号直接隔开,仅限于print()中使用,会自动插入空格输出结果为:
['Hello', 'World!']
Hello World!
Hello World!
Hello World !字符串大小写转换,可用于字符的格式化保存和校验。
比如说在判断用户输入的验证码是否正确而且不用考虑大小写时,就可以把用户输入的验证码和正确验证码,两者都转为小写然后进行对比。
words = 'Hello World!'
print(words.lower()) # 将字符串转为小写
print(words.upper()) # 将字符串转为大写
print(words.capitalize()) # 将字符串首字母大写
print(words.title()) # 将每个单词首字符大写输出结果为:
hello world!
HELLO WORLD!
Hello world!
Hello World!字符串修剪时常用 strip() 函数,一般不传参数,用于去除字符串首尾的空白。这里为了展示修剪效果,传了字符。
字符串的修剪,可用于对用户输入的内容进行格式调整。
比如用户很容易因为误触空格键,或者在其他页面复制文本进行粘贴时不小心多选了空白内容。
字符串的填充,可以用于字符串在页面上展示,调整格式,使展示效果更整齐美观。
words = 'Hello World!'
print(words.strip('H')) # 去除字符串开头和结尾的'H',不传默认为去除空白
print(words.lstrip('H')) # 去除字符串开头的'H',不传默认为去除空白
print(words.rstrip('H')) # 去除字符串结尾的'H',不传默认为去除空白
print(words.center(20, '*')) # 返回指定长度的字符串,以原字符串居中,以'*'填充首尾
print(words.ljust(20, '*')) # 返回指定长度的字符串,以原字符串左对齐,以'*'填充首尾
print(words.rjust(20, '*')) # 返回指定长度的字符串,以原字符串右对齐,以'*'填充首尾输出结果为:
ello World!
ello World!
Hello World!
****Hello World!****
Hello World!********
********Hello World!字符串的判断,常见的比如说用户设置密码时需要判断输入为字母或数字,输入手机号需要判断只包含数字。
words = 'hello world!'
print('以H开头: ', words.startswith('h')) # 判断字符串是否以'H'开头
print('以H结尾:', words.endswith('h')) # 判断字符串是否以'H'结尾
print('只包含字母和数字:', words.isalnum()) # 判断字符串是否只包含字母和数字
print('只包含字母:', words.isalpha()) # 判断字符串是否只包含字母
print('只包含数字:', words.isdigit()) # 判断字符串是否只包含数字
print('全部为小写:', words.islower()) # 判断字符串是否全部为小写
print('全部为大写:', words.isupper()) # 判断字符串是否全部为大写
print('只包含空白字符:', words.isspace()) # 判断字符串是否只包含空白字符输出结果为:
以H开头: True
以H结尾: False
只包含字母和数字: False
只包含字母: False
只包含数字: False
全部为小写: True
全部为大写: False
只包含空白字符: False字符串的格式化,可以使系统数据和说明文字结合,之后再存储或展示。
name = 'Weiyan'
age = 17
print('name: {}, age: {}'.format(name, age)) # 格式化字符串的一种方式
print(f'name: {name}, age: {age}') # 格式化字符串的一种方式
print('name: %s, age: %d' % (name, age)) # 格式化字符串的一种方式输出结果为:
name: Weiyan, age: 17
name: Weiyan, age: 17
name: Weiyan, age: 17这里用到 input() 函数,接受用户输入字符串,并存为变量。如果需要用户输入数字,则需要转为数字格式后才能使用。
函数 id() 用于查询对象的内存地址,判断多个对象是否引用同一个对象时可以用它,非常实用。
函数 type() 用于查询对象的数据类型,非常实用。
函数 count() 用于查询参数在对象中出现次数,可用于字符串和列表,参数可传入整数、浮点数或者字符串
函数 len() 用于获取对象的长度,可用于字符串,列表,元组,字典,集合,非常实用。
words = input('输入字符串:') # 获取用户输入字符串
print(id(words))
print(type(words)) # 通过type查对象元素类型
print(words.count('l')) # 字符'l'在字符串中出现的次数
print(len(words)) # 字符串的长度输出结果为:
输入字符串:Hello, I'm Weiyan
2162362581520
<class 'str'>
2
17常用的算术运算,也就是加、减、乘、除、整除、取余、求幂,这几种。
需要注意的是,算术运算,需要留意传入的数字的字符类型,尤其是从输入获取的字符串,需要转成整数或者浮点数。
a = 2
b = 5
print('a + b =', a + b) # 加法,7
print('a - b =', a - b) # 减法,-3
print('a * b =', a * b) # 乘法,10
print('a / b =', a / b) # 除法,0.4
print('b // a =', b // a) # 整除,2
print('b % a =', b % a) # 取余,1
print('a ** b =', a ** b) # 幂运算,32输出结果为:
a + b = 7
a - b = -3
a * b = 10
a / b = 0.4
b // a = 2
b % a = 1
a ** b = 32比较运算就是将对象的值进行比较,返回的布尔值,是则为True,否则为False。
常用于断言和条件语句的条件设定等场景。
a = 2
b = 5
print('a == b:', a == b) # 等于,False
print('a != b:', a != b) # 不等于,True
print('a > b:', a > b) # 大于,False
print('a < b:', a < b) # 小于,True
print('a >= b:', a >= b) # 大于等于,False
print('a <= b:', a <= b) # 小于等于,True输出结果为:
a == b: False
a != b: True
a > b: False
a < b: True
a >= b: False
a <= b: True也就是我们常说的与、或、非,返回布尔值,是则为True,否则为False。
T = True
F = False
print('T and F:', T and F) # 与,False
print('T or F:', T or F) # 或,True
print('not T:', not T) # 非,False输出结果为:
T and F: False
T or F: True
not T: False赋值运算,就是将一个值,或者一个表达式,存储在一个变量中。后面我们可以通过这个变量,使用这个值。
a = 2 # 简单的赋值
a += 1 # 增强赋值,等同于a = a + 1,结果a = 3
b = c = 7 # 链式赋值
d, e = 8, 9 # 多重赋值,可以一次按顺序对多个不同变量,赋值多个不同值
print('a:', a)
print('b, c:', str(b), str(c))
print('d, e:', str(d), str(e))输出结果为:
a: 3
b, c: 7 7
d, e: 8 9如字面意思,就是检查一个值是否在某个序列中。
比如列表中是否有某个元素为4,比如字典的键和值中是否有字符串’hello‘等等。
常用 in 和 not in 来进行。
words = 'hello world!'
print('l' in words) # 判断'l'是否在字符串中,True
print('l' not in words) # 判断'l'是否不在字符串中, False输出结果为:
True
False身份运算,is 和 not is,返回布尔值。
判断依据为对象的内存地址,而这又涉及python内存地址的管理,比如下方代码中列表a的元素,a[0] 和 a[4] 是两个不同元素,但是内存地址一样,那么 a[0] is a[4] 也会返回为 True。
不可变对象如整数、浮点数、字符串、元组,它们的内存地址会复用。
可变对象如列表、字典、集合,它们的内存地址不会复用。
a = ['1', '2', '3', '2', '1']
b = ['1', '2', '3', '2', '1']
print(a is b) # 判断两个变量是否引用同一个对象,False()
print(a is not b) # 判断两个变量是否引用同一个对象,True输出结果为:
False
True创建列表,最常用的要么是直接通过 [] 里面放好元素来创建;要么是先创建一个空列表,然后根据自己需要往里面添加元素。
当然,通过 list() 函数创建列表也很实用。
l_empty = [] # 创建空列表
l_alpha = ['a', 'b', 'c'] # 创建列表
l_empty1 = list()
l_numbers = list(range(1, 6)) # 使用range()和list()创建数字列表
l_squares = [i**2 for i in range(1, 6)] # 使用推导式创建列表
print('l_empty:', l_empty)
print('l_alpha:', l_alpha)
print('l_empty1:', l_empty1)
print('l_numbers:', l_numbers)
print('l_squares:', l_squares)输出结果为:
l_empty: []
l_alpha: ['a', 'b', 'c']
l_empty1: []
l_numbers: [1, 2, 3, 4, 5]
l_squares: [1, 4, 9, 16, 25]往列表中添加元素,最常用的是使用 append() 函数在列表末尾添加,以及通过 insert() 函数在列表指定位置插入元素。
修改列表元素往往是根据索引来修改,如果只知道值不知道索引,可以先根据值来查索引,然后再修改。
alpha = ['z', 'b']
l_alpha.append('c') # 在列表末尾添加一个元素
l_alpha.insert(3, 'd') # 在指定索引位置插入一个元素
l_alpha.extend(['e', 'f']) # 在列表末尾扩展添加一个列表
l_alpha[0] = 'a' # 根据索引修改列表中元素
print(l_alpha)输出结果为:
['a', 'b', 'c', 'd', 'e', 'f']可以使用 pop() 函数传入索引位置,指定一个元素弹出,也可以不传索引,默认弹出列表最后一个元素。
也可以根据元素的值,通过 remove() 函数删除。
l_alpha = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
l_alpha.pop(-1) # 删除列表中指定索引位置的元素,不传则默认为最后一个元素。此次删掉了'g'
a = l_alpha.pop() # 通过pop()删除的元素可以赋值给变量。此次删掉了'f'
print(a)
l_alpha.remove('e') # 删除列表中第一个匹配的元素。此次删掉了'e'
del(l_alpha[0]) # 根据索引删除列表中第一个元素。此次删掉了'a'
print(l_alpha)
l_alpha.clear() # 清空列表
print(l_alpha)输出结果为:
f
['b', 'c', 'd']
[]可以通过索引查列表中元素的值,也可以根据值查索引,还可以统计某个值出现的次数(因为列表中元素是可重复的)。
l_alpha = ['a', 'b', 'c', 'b']
first = l_alpha[0] # 根据索引获取列表中第一个元素
last = l_alpha[-1] # 根据索引获取列表中最后一个元素
index = l_alpha.index('b') # 查询字符'c'第一次出现的索引
count = l_alpha.count('b') # 查询字符'c'在列表中出现的次数
print('first:', first)
print('last:', last)
print('index:', index)
print('count:', count)输出结果为:
first: a
last: b
index: 1
count: 2使用 sort() 可将列表按元素字符进行正序或反序排列。
使用 sorted() 可将列表临时排序然后赋值给其他变量或者打印,对列表本身无影响。
使用 reverse() 函数是对列表首尾倒序,与元素是什么内容本身无关。
l_alpha = ['a', 'b', 'c', 'b']
l_alpha.sort(reverse=True) # 对列表中元素进行排序,reverse=True为反序,为False或者不传为正序
print('sort()原表:', l_alpha)
l_sorted = sorted(l_alpha, reverse=False) # 将列表临时排序后赋值给新变量,reverse=True为反序,False或不传为正序
print('sorted()原表:', l_alpha)
print('sorted()新表:', l_sorted)
l_alpha.reverse() # 对列表进行首尾反转
print('reverse()原表:', l_alpha)输出结果为:
sort()原表: ['c', 'b', 'b', 'a']
sorted()原表: ['c', 'b', 'b', 'a']
sorted()新表: ['a', 'b', 'b', 'c']
reverse()原表: ['a', 'b', 'b', 'c']列表的切片,也是一个列表。
可传入三个参数 a:b:c,a为起点索引,b为终点索引,范围是 [a, b),不传则范围为[0, -1],c为步长,即每几个元素取一次,不传则默认为1,也就是每个元素都包含。
l_alpha = ['a', 'b', 'c', 'b', 'e']
l_slice1 = l_alpha[0:3] # 切片,获取子列表包含元素索引0开始,2结尾
l_slice2 = l_alpha[:3] # 切片,获取子列表包含元素索引0开始,2结尾
l_slice3 = l_alpha[-2:] # 切片,获取子列表包含元素索引-2开始,-1结尾
l_slice4 = l_alpha[::2] # 切片,获取子列表包含元素索引0开始,-1结尾,每隔一个元素取一个
l_slice5 = l_alpha[:] # 切片,获取子列表包含元素索引0开始,-1结尾,相当于复制了列表
print('原表:', l_alpha)
print('l_alpha[0:3]:', l_slice1)
print('l_alpha[:3]:', l_slice2)
print('l_alpha[-2:]:', l_slice3)
print('l_alpha[::2]:', l_slice4)
print('l_alpha[:]:', l_slice5)输出结果为:
原表: ['a', 'b', 'c', 'b', 'e']
l_alpha[0:3]: ['a', 'b', 'c']
l_alpha[:3]: ['a', 'b', 'c']
l_alpha[-2:]: ['b', 'e']
l_alpha[::2]: ['a', 'c', 'e']
l_alpha[:]: ['a', 'b', 'c', 'b', 'e']列表的复制,主要有使用 copy() 函数、使用切片,以及导入 copy 模块后使用 copy.copy() 实现的浅拷贝;
以及,导入 copy 模块后使用 copy.deepcopy() 实现的深拷贝。
浅拷贝对象与原表,在修改内部嵌套对象时,彼此会同步生效,因为这部分对象它们是共用的。
深拷贝对象与原表,在修改时,对彼此无影响,是完全独立的两个对象。
l_alpha = ['a', 'b', 'c', ['d', 'e']]
l_copy1 = l_alpha.copy() # 浅拷贝
l_copy2 = l_alpha[:] # 浅拷贝
import copy
l_copy3 = copy.copy(l_alpha) # 浅拷贝
l_copy4 = copy.deepcopy(l_alpha) # 深拷贝
print(l_copy1)
print(l_copy2)
print(l_copy3)
print(l_copy4)输出结果为:
['a', 'b', 'c', ['d', 'e']]
['a', 'b', 'c', ['d', 'e']]
['a', 'b', 'c', ['d', 'e']]
['a', 'b', 'c', ['d', 'e']]这里再列举几个其他列表常用的函数:
l_nums = [1, 2, 4, 3, 2, 1]
l_len = len(l_nums) # 查询列表长度
l_min = min(l_nums) # 查询列表中最小值
l_max = max(l_nums) # 查询列表中最大值
l_sum = sum(l_nums) # 查询列表在所有元素的和
print('l_len:', l_len)
print('l_min:', l_min)
print('l_max:', l_max)
print('l_sum:', l_sum)输出结果为:
l_len: 6
l_min: 1
l_max: 4
l_sum: 13元组的元素不可新增、不可删除、不可修改,查询方式和列表相同。
nums = (1, 2, 3, 4) # 创建一个元组。几种常用的创建字典的方法如下。
一般直接使用花括号填入键值对来创建字典,或者先创建一个空字典,然后往里面添加键值对。
d_empty1 = {} # 使用花括号创建空字典
d_infor1 = {'name': 'Weiyan', 'age': 17} # 使用花括号创建字典
d_empty2 = dict() # 使用dict()函数创建空字典
d_infor2 = dict(name='Weiyan', age=17) # 使用dict()函数和关键字参数创建字典
d_infor3 = dict([('name', 'Weiyan'), ('age', 17)]) # 使用dict()函数和键值对列表创建字典
print(d_empty1)
print(d_infor1)
print(d_empty2)
print(d_infor2)
print(d_infor3)输出结果为:
{}
{'name': 'Weiyan', 'age': 17}
{}
{'name': 'Weiyan', 'age': 17}
{'name': 'Weiyan', 'age': 17}通过键来修改字典中的值时,如果字典中不存在这个键,就会把这对键值对添加进去。
使用 update() 函数更新字典时,也是类似,如果键已经存在,则修改值,如果键不存在,就新增这个键值对,对于更新时没有涉及的键值对,会保持原样。
d_infor = {'name': 'Weiyan', 'age': 17}
d_infor['city'] = 'Shenzhen' # 如果字典中已存在键city,就修改值,如果不存在,就新增键值对
print(d_infor)
d_infor.update({'sex': 'male', 'age': 16}) # 使用update()方法更新字典,更新后字典内存地址不变
print(d_infor)输出结果为:
{'name': 'Weiyan', 'age': 17, 'city': 'Shenzhen'}
{'name': 'Weiyan', 'age': 16, 'city': 'Shenzhen', 'sex': 'male'}可以通过 del() 函数或者 pop() 函数来删除指定的键值对。
也可以使用 clear() 函数来直接清空整个字典。
d_infor = {'name': 'Weiyan', 'age': 17, 'city': 'Shenzhen'}
del(d_infor['city']) # 使用del删除键值对
num = d_infor.pop('age') # 使用pop()删除键值对
print(d_infor)
d_infor.clear() # 使用clear()情况字典
print(d_infor)输出结果为:
{'name': 'Weiyan'}
{}可以通过键来访问字典中对应的值。
也可以使用 get() 方法获取字典中的值,不存在就默认返回设定的默认值(如示例中的 hello),如果不设置默认值就返回 None。
示例中的 keys(),values(),items() 是用于获取字典中所有键、值、键值对的函数。
d_infor = {'name': 'Weiyan', 'age': 17}
name = d_infor['name'] # 根据键获取字典中的值
age = d_infor.get('age', 'hello') # 使用get()方法获取字典中的值
keys = d_infor.keys() # 获取字典中所有键
values = d_infor.values() # 获取字典中所有值
items = d_infor.items() # 获取字典中所有键值对
print('name:', name)
print('age:', age)
print('age:', keys)
print('values:', values)
print('items:', items)输出结果为:
name: Weiyan
age: 17
age: dict_keys(['name', 'age'])
values: dict_values(['Weiyan', 17])
items: dict_items([('name', 'Weiyan'), ('age', 17)])字典的复制,主要有使用 copy() 函数,以及导入 copy 模块后使用 copy.copy() 实现的浅拷贝;
以及,导入 copy 模块后使用 copy.deepcopy() 实现的深拷贝。
和列表一样,浅拷贝对象与原对象修改内部嵌套对象时彼此同步生效,深拷贝对象与原对象完全独立。
d_infor = {'name': 'Weiyan', 'age': 17, 'city': {'city1': 'JingDeZhen', 'city2': 'ShenZhen'}}
d_copy1 = d_infor.copy() # 浅拷贝
import copy
d_copy2 = copy.copy(d_infor) # 浅拷贝
d_copy3 = copy.deepcopy(d_infor) # 深拷贝
print('d_copy1:', d_copy1)
print('d_copy2:', d_copy2)
print('d_copy3:', d_copy3)输出结果为:
d_copy1: {'name': 'Weiyan', 'age': 17, 'city': {'city1': 'JingDeZhen', 'city2': 'ShenZhen'}}
d_copy2: {'name': 'Weiyan', 'age': 17, 'city': {'city1': 'JingDeZhen', 'city2': 'ShenZhen'}}
d_copy3: {'name': 'Weiyan', 'age': 17, 'city': {'city1': 'JingDeZhen', 'city2': 'ShenZhen'}}这里使用字典的 keys(),values(),items() 函数,演示对于字典的键、值、键值对进行遍历的常用方法。
d_infor = {'name': 'Weiyan', 'age': 17, 'city': 'ShenZhen'}
print('keys:')
for key in d_infor.keys(): # 遍历字典中的键
print(key)
print('\nvalues:')
for value in d_infor.values(): # 遍历字典中的值
print(value)
print('\nkeys,values:')
for key, value in d_infor.items(): # 遍历字典中的键值对
print(f'{key}: {value}')输出结果为:
keys:
name
age
city
values:
Weiyan
17
ShenZhen
keys,values:
name: Weiyan
age: 17
city: ShenZhen列举几个其他关于字典的常用方法:
d_infor = {'name': 'Weiyan', 'age': 17, 'city': 'ShenZhen'}
print(len(d_infor)) # 获取字典的长度
print('name' in d_infor) # 检查字典中是否有该键
print('\nsorted_keys:')
for key in sorted(d_infor.keys()): # 按字符排序遍历字典中所有键
print(key)输出结果为:
3
True
sorted_keys:
age
city
name原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。