Board logo

标题: [已解决]35求助 读取XML文件指定信息 [打印本页]

作者: qianshang    时间: 2020-11-30 23:07     标题: [已解决]35求助 读取XML文件指定信息

解析每个ID的信息  <ID></ID>   其中的UserType,  UserVendorId, UserSubType, Flags以及注释信息 保存成txt    用python写最好
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
作者: zaqmlp    时间: 2020-11-30 23:48

  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()
复制代码

作者: qianshang    时间: 2020-12-1 00:01

感谢大佬  还有个问题就是这里面<ID1>....<ID5>    跟后面<ID>...</ID>数据其实是重复的  这个可以只取一次么
作者: zaqmlp    时间: 2020-12-1 00:28

回复 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)
复制代码

作者: qianshang    时间: 2020-12-1 00:52

OK  已转账




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2