字符串比较
是否在列表
1、使用 in 运算符
my_list = ['apple', 'banana', 'orange']
if 'banana' in my_list: ##匹配的是一个列表元素,是精确匹配
2、使用 count() 方法
如果字符串在列表中出现了至少一次,返回值大于等于 1;否则,返回值为 0。
my_list = ['apple', 'banana', 'orange', 'banana']
if my_list.count('banana') >= 1: ##匹配的是一个列表元素,是精确匹配
3、模糊匹配
my_list = ['apple', 'banana', 'orange','apple1']
str1='app'
matching = [s for s in my_list if str1 in s]
print(matching) ####结果如下
['apple', 'apple1']
4、先转为字符串
print(str(my_list).find(str1)) ##结果为2,查找的第一个位置
txt无法换行
使用如下方法对txt文件中的内容进行换行时,出现无法换行的问题:
f.write("\n")
f.write(变量名+"\r\n")
在 Linux中换行是\n ,winddows中换行是 \r\n ,在linux中用\n写入的文字
删除字符
删除字符串中指定的符号可以使用字符串的replace:
s = "abc123,123。"
s = s.replace(',', '') # 删除逗号
print(s)
s = " 123abc "
print(s.lstrip()) # "123 abc " # 删除开头的空格
print(s.rstrip()) # " 123 abc" # 删除结尾的空格
print(s.strip()) # "123 abc" # 删除开头和结尾的空格
print(s.replace(' ', '')) # "123abc" # 删除字符串中所有的空格
处理excel
三种方式都可以:
1、用xlrd和xlwt进行excel读写;
xlrd是一个库,用于从Excel文件中以.xls格式读取数据和格式化信息
xlwt是一个库,用于将数据和格式化信息写入较旧的Excel文件(例如:.xls),不能写xlsx
如果xlrd版本过高, 会出现xlrd.biffh.XLRDError: Excel xlsx file; not supported
linux: pip install xlrd==1.2.0 --建议这个版本
def open_excel(file= 'manual_command.xlsx'):
try:
excel_file = xlrd.open_workbook(file)
return excel_file
except Exception as e:
print(str(e))
excel_content = open_excel()
sheet_names = excel_content.sheet_names() ##打印所有sheet名字
sheet_data = excel_content.sheet_by_name("sheet2") ##获取某个sheet 数据
row_num = sheet_data.nrows ##获取总行数,包括中间的空行
print('总行数:',row_num)
cols_num = sheet_data.ncols
print('表格总列数:', cols_num)
row_data = sheet_data.row_values(2) #获取第2行数据, list返回形式
print(row_data)
column_data = sheet_data.col_values(2) ##获取第3列数据,list返回形式
print(column_data)
cell_11_2 = sheet_data.cell(10, 1).value
print('第11行第2列的单元格的值:', cell_11_2)
def creat_excel():
# 创建一个workbook 设置编码
workbook = xlwt.Workbook(encoding='utf-8')
# 创建一个worksheet
worksheet = workbook.add_sheet('Worksheet')
# 写入excel参数对应 行, 列, 值
worksheet.write(0, 0, label='测试')
# 设置单元格宽度
worksheet.col(0).width = 3333
# 设置单元格高度
tall_style = xlwt.easyxf('font:height 520;')
worksheet.row(0).set_style(tall_style)
workbook.save('Excel_test.xls')
2、用openpyxl进行excel读写;
openpyxl是一个Python库,用于读取/写入Excel 2010 xlsx/xlsm/xltx/xltm文件
用pandas进行excel读写;
3、pandas支持xls, xlsx, xlsm, xlsb, odf, ods和odt文件扩展名从本地文件系统或URL读取。支持读取单个工作表或工作表列表的选项。
正则re
查找
import re
Str_list='what do you just do, I can\'t believe'
match=re.search('do', Str_list)#re.search 扫描整个字符串并返回第一个成功的匹配
print(match.group(),type(match.group()))
##结果为 do <class 'str'>
print(match.span(),type(match.span())) #(5, 7) <class 'tuple'> 返回在字符串中的起始位置和结束位置
match1=re.match('do', Str_list) ##re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 none。
print(match1) ##因为str_list第一个字符串不是do,所以返回None
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
line = "Cats are smarter than dogs";
searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)
##re.I 忽略大小写
##re.M 多行模式
替换
re 模块提供了re.sub用于替换字符串中的匹配项
phone = "2004-959-559 # 这是一个国外电话号码"
# 删除字符串中的 Python注释
num = re.sub(r'#.*$', "", phone) ##将#一直到结尾的内容删掉(替换为空,就是删掉)
print("电话号码是: ", num)
##结果为:电话号码是: 2004-959-559
# 删除非数字(-)的字符串
num = re.sub(r'\D', "", phone)
print("电话号码是 : ", num)