该下班了,我不想加班啊,怎么办?怎么办?如何从发票汇总表的Z列备注信息中提取地址信息啊?我需要帮助!

  江湖救急!发票备注中的地址Python可以这样提取,早回家不加班

  现有一张工作表,为发票的信息汇总表,其中Z列为发票的备注信息,需要从中提取地址,粉丝不想一个一个去查找、复制、粘贴。激动的心,颤动的手,想早点回家,说走不能走。

  现在,数海话表图的Python高效办公来了,你的愿望可以实现了:

  fromopenpyxlimportload_workbookimportredefparse_address(text): pattern =r"((四川省)泸州市\w+)" iftxt := re.findall(pattern, text): address = txt[-1][0].replace("建筑面积","").replace("_x000D_","") returnaddress returnNonepath ="111.xlsx"wb = load_workbook(path)ws = wb["Sheet2"]foriinrange(2,ws.max_row): ws.cell(i,27).value = parse_address(ws.cell(i,26).value)wb.save("111_地址.xlsx")

  第一步、导入所需的模块,让他们来干活

  fromopenpyxlimportload_workbookimportre

  • 使用openpyxl模块读取工作表信息,并保存提取到的信息,可以保持所有格式不变。
  • re:正则表达式,用于匹配复杂的文本信息。

      第二步,自定义函数defparse_address(text)来帮忙

  • r"((四川省)泸州市\w+)":用于匹配泸州市开头的地址、四川省可能可无。
  • if txt := re.findall(pattern, text):“泸州”在有的单元格出现了两次,使用findall模块来查找所有符合条件的地址。如果匹配成功就赋值给txt。
  • txt[-1][0].replace("建筑面积","").replace("_x000D_",""):对匹配组最后一个值的第一个元素进行整理,得出最终想要结果。

      第三步,对指定工作表的指定区域进行匹配

      path="111.xlsx"wb= load_workbook(path)ws= wb["Sheet2"]fori in range(2,ws.max_row): ws.cell(i,27).value = parse_address(ws.cell(i,26).value)wb.save("111_地址.xlsx")

  • for i in range(2,ws.max_row):从第二行开始,第一行为标题行。
  • ws.cell(i,27).value = parse_address(ws.cell(i,26).value):把匹配的结果写入第27列。
  • wb.save("111_地址.xlsx"):保存结果。
  •   学会了Python高效办公技巧,你就可以不用加班,早点回家了!