读取SpreadSheetML,建立6个词云

xml为SpreadSheetML格式(Excel的xml格式)。具体:https://blog.csdn.net/lmhuanying1012/article/details/78753851

经过删除<Style></Style>之后为

ps:一定要检查文件是否完整。解析错误可能是文件有问题。这个文件不完整,报错 parse unkown line 5443,因为没有</ss:Worksheet>之类。

1.  解析

import xml.dom.minidom
import pandas as pd


dom=xml.dom.minidom.parse('introduce.xml')
root=dom.documentElement#获得xml文档对象
use=root.getElementsByTagName('ss:Cell')#获得子标签

2.  xml转为dataframe

cols=['c_id','c_account','c_hope_time','c_hobby','c_introduce','c_choose_standard']
df_xml=pd.DataFrame(columns=cols)




#Row标签为最外层,取第一个cell标签,再取其中的Data标签,打印出来内容
i=0
c_id=0
while i<use.length:
   temp=use[i].getElementsByTagName('Data')[0].firstChild
#use[i]第几行数据,getElementsByTagName('nodeName')获得子标签,
#获得标签对之间的数据 temp.firstChild.data===temp.childNodes[0].nodevalue
   if temp:
       temp=temp.data
   else:
       temp='nan'#处理null
   if(i%6==0):
       c_id=temp
   elif i%6==1:
       c_account=temp
   elif i%6==2:
       c_hope_time=temp
   elif i%6==3:
       c_hobby=temp
   elif i%6==4:
       c_introduce=temp
   else:
       c_choose_standard=temp
     
   if (i%5==0) & (i>=10):
#dataframe添加记录df.append()
#pd.Series([数据],index=[列名])创建数组
       df_xml=df_xml.append(
           pd.Series([c_id,c_account,c_hope_time,c_hobby,c_introduce,c_choose_standard],
                      index=cols),ignore_index=True)      
   i=i+1 
   
   
#转为csv保存
df_xml['c_id']=df_xml['c_id'].astype('int')#某列类型转换
df_xml=df_xml.sort_values(by='c_id').reset_index(drop=True)#按照某列排序
df_xml=df_xml.drop_duplicates(subset=['c_id'])#pd去重
df_xml.to_csv('introduce.csv',index=False,encoding='utf_8_sig')#中文写入csv,注意乱码问题,encoding='utf_8_sig'

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值