Jeanway_Lai 2023-03-01 10:22 采纳率: 50%
浏览 24
已结题

关于省市县阶梯级规则字符串整理成表格的Python方法处理

s = 
'''山西省(15个县、市、区):
太原市清徐县、阳泉市盂县、晋中市灵石县、运城市垣曲县、晋城市沁水县、朔州市山阴县、长治市长治县、忻州市河曲县、临汾市蒲县、运城市万荣县、晋中市寿阳县、太原市古交市、太原市尖草坪区、吕梁市柳林县、大同市天镇县。
吉林省(9个县、市、区):
延边州和龙市、松原市宁江区、白山市八道江区、辽源市东丰县、白城市镇赉县、吉林市磐石市、长春市朝阳区、通化市东昌区、四平市铁东区
江西省(11个县、区):
南昌市新建县、赣州市于都县、吉安市永丰县、宜春市万载县、抚州市乐安县、新余市渝水区、上饶市婺源县、九江市修水县、鹰潭市月湖区、景德镇市浮梁县、萍乡市芦溪县。'''

请问大家啊这一段文字用python自动化办公如何保存为图片图表中这样子的格式?以正则为例,把上面的自动提取出来后呢,省市县可以一一对应在一行里,比如我提取一个县,它会自动匹配到字符串中前面文字中最近的\w{2,3}市,而这个市又会匹配前面文字中最近的\w{2,3}省来生成表格。
以山西省的为例

img

  • 写回答

2条回答 默认 最新

  • simple_chenc 2023-03-01 10:35
    关注

    以下是基于GPT的回答

    import re
    import openpyxl
    
    s = '''山西省(15个县、市、区):
    太原市清徐县、阳泉市盂县、晋中市灵石县、运城市垣曲县、晋城市沁水县、朔州市山阴县、长治市长治县、忻州市河曲县、临汾市蒲县、运城市万荣县、晋中市寿阳县、太原市古交市、太原市尖草坪区、吕梁市柳林县、大同市天镇县。
    吉林省(9个县、市、区):
    延边州和龙市、松原市宁江区、白山市八道江区、辽源市东丰县、白城市镇赉县、吉林市磐石市、长春市朝阳区、通化市东昌区、四平市铁东区
    江西省(11个县、区):
    南昌市新建县、赣州市于都县、吉安市永丰县、宜春市万载县、抚州市乐安县、新余市渝水区、上饶市婺源县、九江市修水县、鹰潭市月湖区、景德镇市浮梁县、萍乡市芦溪县。'''
    
    # 使用正则表达式匹配省、市、县区信息
    province_pattern = re.compile(r'([\u4e00-\u9fa5]+省)')
    city_pattern = re.compile(r'([\u4e00-\u9fa5]+市)')
    county_pattern = re.compile(r'([\u4e00-\u9fa5]+县|[\u4e00-\u9fa5]+区)')
    
    # 初始化Excel表格
    wb = openpyxl.Workbook()
    sheet = wb.active
    sheet.title = "地址信息"
    
    # 在第一行写入表头
    sheet.cell(row=1, column=1).value = "省份"
    sheet.cell(row=1, column=2).value = "城市"
    sheet.cell(row=1, column=3).value = "区县"
    
    # 遍历字符串,提取省市县信息,并写入Excel表格
    row = 2
    province = ""
    city = ""
    for line in s.split("\n"):
        province_match = province_pattern.search(line)
        if province_match:
            province = province_match.group(1)
            city = ""
            continue
    
        city_match = city_pattern.search(line)
        if city_match:
            city = city_match.group(1)
    
        county_matches = county_pattern.findall(line)
        if county_matches:
            for county in county_matches:
                sheet.cell(row=row, column=1).value = province
                sheet.cell(row=row, column=2).value = city
                sheet.cell(row=row, column=3).value = county.split("市")[-1]
                row += 1
    
    # 保存Excel表格
    wb.save("address.xlsx")
    
    
    

    帮到,点采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月9日
  • 已采纳回答 3月1日
  • 修改了问题 3月1日
  • 创建了问题 3月1日

悬赏问题

  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答
  • ¥20 在本地部署CHATRWKV时遇到了AttributeError: 'str' object has no attribute 'requires_grad'