[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[已解决]35求助 读取XML文件指定信息

解析每个ID的信息  <ID></ID>   其中的UserType,  UserVendorId, UserSubType, Flags以及注释信息 保存成txt    用python写最好
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

  1. # encoding: utf-8
  2. # Python 3.6.0
  3. import os
  4. import codecs
  5. import re
  6. path='.'
  7. arr=os.listdir(path)
  8. for it in arr:
  9.     file=os.path.join(path, it)
  10.     if os.path.isfile(file) and (it[-4:].lower()=='.xml'):
  11.         print(file)
  12.         f=codecs.open(file,'r','utf-8')
  13.         text=f.read()
  14.         f.close()
  15.         txtfile=file+'.txt'
  16.         f=codecs.open(txtfile,'w','gb2312')
  17.         m=re.findall(r'<ID\d*>[\s\S]+?<\/ID\d*>',text)
  18.         for it in m:
  19.             brr=['','','','','']
  20.             a=re.search(r'[^>]+(?=<\/UserType>)',it)
  21.             if a:
  22.                 brr[0]=a.group(0)
  23.             b=re.search(r'[^>]+(?=<\/UserVendorId>)',it)
  24.             if b:
  25.                 brr[1]=b.group(0)
  26.             c=re.search(r'[^>]+(?=<\/UserSubType>)',it)
  27.             if c:
  28.                 brr[2]=c.group(0)
  29.             d=re.search(r'[^>]+(?=<\/Flags>)',it)
  30.             if d:
  31.                 brr[3]=d.group(0)
  32.             e=re.search(r'(?<=<!--)[^>]+(?=-->)',it)
  33.             if e:
  34.                 brr[4]=e.group(0)
  35.             line='\t'.join(brr)
  36.             f.write(line+'\r\n')
  37.         f.close()
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

感谢大佬  还有个问题就是这里面<ID1>....<ID5>    跟后面<ID>...</ID>数据其实是重复的  这个可以只取一次么

TOP

回复 3# qianshang
19行,自行选择修改
有数字
  1. m=re.findall(r'<ID\d+>[\s\S]+?<\/ID\d+>',text)
复制代码
无数字
  1. m=re.findall(r'<ID>[\s\S]+?<\/ID>',text)
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

OK  已转账

TOP

返回列表