文章目录
- 1. 如何实现模糊匹配
- 2.如何修改 List 中的值
- 3. 如何批量将 List 中所有项目的空格去掉
- 4. 如何批量将 List 中所有的项目都变成相同的长度,不够的地方用指定的符号补齐
- 5. 连续使用占位符 % 的时候,后面一定要接 “元组” 不可以是列表
- 6. 如何根据已有的数据 print 出来规则的表格
- 7. 如何删除字典中的元素
- 8. remove、pop 、append、insert 等对列表操作的方法,不需要返回
- 9. 扩展和拼接列表
- 10. 判断列表是否为空
- 11. 使用 html 中的文本来匹配
- 12. python + selenium 下拉框、选项框 select 用法
- 13. driver 实现自动文本填充
1. 如何实现模糊匹配
html.xpath(contains(@标签属性,"字符串"))
如下图所示,在 tr 标签的 id 中包含了车次的信息,所以,如果我想得到所有与车次信息有关的 tr 标签,我就可以用如下代码进行模糊匹配
train_numbers = ['Z49','G8588','K193','G8594']
for train_number in train_numbers:
info = html.xpath('//tr[contains(@id,"%s")]//text()' % train_number)
2.如何修改 List 中的值
如果想要批量修改 列表 中的值,使用 for 循环简单的遍历每一个项是做不到的,例如:
str = ['dag ', ' hfgha', 'dga dgfag', 'laoimngh']
for i in str:
i = 'heheh'
print(str)
但是,如果使用 for 循环按照 index 的方式来遍历,则可以实现,如下
str = ['dag ', ' hfgha', 'dga dgfag', 'laoimngh']
for i in range(len(str)):
str[i] = 'hehe'
print(str)
3. 如何批量将 List 中所有项目的空格去掉
- 第一种方法:还是使用
for i in range(len(str))
的方法进行遍历,但是千万要记得,执行replace()
函数之后,要把值再赋给str[i]
str = ['dag ', ' hfgha', 'dga dgfag', 'laoimngh']
for i in range(len(str)):
str[i] = str[i].replace(' ','')
print(str)
- 第二种方法:使用
lamba
隐式函数的方法来将整个列表的每一项进行相同的操作
str = ['dag ', ' hfgha', 'dga dgfag', 'laoimngh']
str = list(map(lambda x:x.replace(' ',''),str))
print(str)
注意:map 得到之后,是一个可以迭代的对象,要把它用 list 函数再转化成列表,才可以进行打印和后续的列表操作
- 第三种方法:
strip
操作
str = [' dg ', ' hfg ha ', ' dgad gfag ', 'laoimngh ']
str = list(map(lambda x:x.lstrip(),str))
str2 = [' dg ', ' hfg ha ', ' dgad gfag ', 'laoimngh ']
str2 = list(map(lambda x:x.rstrip(),str2))
str3 = [' dg ', ' hfg ha ', ' dgad gfag ', 'laoimngh ']
str3 = list(map(lambda x:x.strip(),str3))
print(str)
print(str2)
print(str3)
4. 如何批量将 List 中所有的项目都变成相同的长度,不够的地方用指定的符号补齐
str.ljust
(最终长度,填补的字符)
str = ['dag', ' hfgha', 'dgadgfag', 'laoimngh']
str = list(map(lambda x:x.ljust(10,'*'),str))
print(str)
5. 连续使用占位符 % 的时候,后面一定要接 “元组” 不可以是列表
所以,要先转换成 “元组” ,按照如下代码:
lst = ['1','2','3','4']
lst = tuple(lst)
x = '%s,%s,%s,%s'%lst
print(x)
6. 如何根据已有的数据 print 出来规则的表格
- 使用
prettytable
中的PrettyTable
类来创建规则表格 - 使用这种方式创建的 表格 可以直接转化成字符串
str
,或者写入文件
from prettytable import PrettyTable
tab = PrettyTable()
header = ["车次", "出发站", "到达站", "出发时间", "到达时间"]
infos = {
'G8546':['G8546', '沙坪坝', '成都东', '10:02', '11:37'],
'G1832':['G1832', '重庆西', '成都东', '10:16', '11:48'],
'C6014':['C6014', '重庆西', '成都南', '10:31', '12:18'],
'G1710':['G1710', '重庆西', '成都东', '10:49', '12:23']
}
tab.header = True #默认为true
tab.field_names = header
for key in infos:
value = infos[key]
tab.add_row(value)
print(tab)
tab_str = str(tab)
with open('tab.txt','w',encoding='utf-8') as f:
f.write(tab_str)
7. 如何删除字典中的元素
- diction.clear 删除字典全部内容
- diction.pop(‘key’) 删除‘key’所代表的键值对
- diction.popitem() 随机返回并删除一个键值对
- del diciton[‘key’] 删除选中的 key 的键值对内容
8. remove、pop 、append、insert 等对列表操作的方法,不需要返回
这里的
remove
需要的参数是value
,而pop
需要的参数是index
,这点需要注意
lst = ['1','2','3']
lst.remove('3')
print(lst)
lst.append('4')
print(lst)
lst.pop(0)
print(lst)
lst.insert(2,'11')
print(lst)
lst.insert(6,'80') # 插入的位置超出索引,在最后一个位置插入
print(lst)
针对整个列表 list 的操作,例如 remove、append、 pop 不需要返回,不需要 lst = lst.remove(),只有在针对列表中单个元素进行操作的时候,比如 lst[i].replace(" “,”")的时候,才需要返回 lst[i] = lst[i].replace(" “,”")
9. 扩展和拼接列表
- 方法一:
lst1.extend(lst2)
lst = ['1','2','3']
lst2 = ['7','8','9','20']
lst.extend(lst2)
print(lst)
同样的,这也是对列表的操作,所以不需要返回,不需要 lst = lst.extend() 如果这样操作的话,会返回 None
- 方法二:
lst = lst + lst2
lst = ['1','2','3']
lst2 = ['7','8','9','20']
lst = lst + lst2
print(lst)
- 方法三:
array.flatten()
将多为的数组降维到一维
array, 多维数组变成一维数组,flatten()函数用法:
flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组。
flatten只能适用于numpy对象,即array或者mat,普通的list列表不适用。
a.flatten():a是个数组,a.flatten()就是把a降到一维,默认是按行的方向降 。
这种方法多用于复杂算法方面,在此只做了解,按照此方法,我们可以先将列表转换成数组,降维后再tolist()
10. 判断列表是否为空
- 方法一:
len(lst)
if len(lst):
pass
else:
pass
方法二:
if lst:
pass
else:
pass
11. 使用 html 中的文本来匹配
content = html.xpath('//div[@id="名称"]//a[text()="文本"]'
)
例如下面展示一下,如何定位到百度的 “学术” 按钮,并点击
from selenium import webdriver
from lxml import etree
driver = webdriver.Chrome(executable_path= r'C:\Users\dell\Anaconda3\Scripts\chromedriver.exe')
driver.get('http://www.baidu.com/')
page = driver.page_source
html = etree.HTML(page)
search_button = driver.find_element_by_xpath('//a[text()="学术"]').click()
同样的方式,还可以点击 “贴吧”,“地图” 等等按键
12. python + selenium 下拉框、选项框 select 用法
https://www.cnblogs.com/dwdw/p/9998647.html
13. driver 实现自动文本填充
driver.send_keys()
driver = webdriver.Chrome(executable_path= r'C:\Users\dell\Anaconda3\Scripts\chromedriver.exe')
driver.get('http://www.baidu.com/')
input_box = driver.find_element_by_xpath('//input[@id="kw"]')
input_box.send_keys("woshishei")