如何修改Pandas to_xml代码,确保空数据时输出展开式根标签?
问题描述
我写了这段Python代码导出XML:
data_to_string = data_from_table.to_xml(path_or_buffer= file_name + ".xml", index=False, root_name="convoy", row_name="vehicle", xml_declaration=False)
有数据时导出正常,但无数据时生成的XML只有<convoy/>,想修改代码让不管有没有数据,都生成如下格式的XML:
<convoy> </convoy>
解决方法
可以通过判断数据框是否为空分情况处理:空数据时直接写入目标格式的XML文本;有数据时沿用原to_xml方法生成内容。
方案一:提前判断数据状态(效率更高)
file_path = f"{file_name}.xml" if data_from_table.empty: # 空数据场景直接写入指定格式 with open(file_path, 'w', encoding='utf-8') as f: f.write("<convoy>\n</convoy>") else: # 有数据场景用原方法导出 data_from_table.to_xml(path_or_buffer=file_path, index=False, root_name="convoy", row_name="vehicle", xml_declaration=False)
方案二:生成后替换空标签(改动最小)
如果不想改动原有导出逻辑,可以先生成XML,再检查并替换自闭合的空标签:
file_path = f"{file_name}.xml" # 先执行原有导出逻辑 data_from_table.to_xml(path_or_buffer=file_path, index=False, root_name="convoy", row_name="vehicle", xml_declaration=False) # 读取文件并替换空标签 with open(file_path, 'r+', encoding='utf-8') as f: content = f.read() if content == "<convoy/>": f.seek(0) f.write("<convoy>\n</convoy>") f.truncate()
两种方案都能满足需求,方案一避免了二次读写文件,适合数据量较大的场景;方案二对原有代码侵入性低,适合快速修改。
内容的提问来源于stack exchange,提问作者Breathe of fate
相关产品推荐
相关产品推荐

