Re模块较为全面的基础讲解
https://www.cnblogs.com/yan-lei/p/7653362.html
但网上很多教程和使用都没有系统全面的介绍group(),该功能非常强大
问题:
x=[]
y = re.findall(pattern,string)
x.append(y)
这样对一列数据处理时会出现数据无法写入问题
使用re.findall()函数 返回结果是一个内容为文本格式的list,eg:y=[‘result’]
在这种情况下,print(x)
[[‘result’],[‘result1’],[‘result2’]]
[[a],[b],[c]]为二维矩阵,上述x输出结果为带格式的二维矩阵
xlwings无法将其按预定格式写入excel表中,代码运行结束后,带填充列仍然为空
import re
import xlwings as xw
Excel = xw.App(visible=True,add_book=False)
Excel.display_alerts=True
Excel.screen_updating=False
#文件位置:filepath,打开test文档,然后保存,关闭,结束程序
filepath=r'C:\Users\viola\Desktop\任务\Demo for test\test example(for qq).xlsx'
ExcelFile = Excel.books.open(filepath)
sheet = ExcelFile.sheets['Sheet1']
#上述代码用于打开指定excel文档,指定工作表
mails = sheet.range('I2').expand('down').value
extract_qq = []
qqmail = r'^.+[@qq\.com]$'
for email in mails:
if re.match(qqmail, email):
qq_num = re.search(r'(.*)@qq\.com',email)
extract_qq.append(qq_num.group(1))
#关键!!用re.search对字符串分组(需要截取避免使用findall),再用group()提取括号内容,即截取片段。group(0)为整个字符串,group(1)第一个括号内容,group(2)第二个括号内容
else:
extract_qq.append('N')
print(extract_qq)
sheet.range('J2').options(transpose=True).value = extract_qq
#写入表格,列表使用transpose将自动填入一列,options(transpose=True)
ExcelFile.save()
ExcelFile.close()
Excel.quit()