python - 使用 XML ElementTree 从 XML(旧 Excel)文件中提取值
问题描述
我不太熟悉 xml elementTree 也不熟悉 Excel 如何编码 XML,甚至在访问我的文件中的值时也遇到了麻烦。如果有人能告诉我如何访问这些值并将整个文件转换为 CSV,我将不胜感激!
这是我的 XML 文件的一部分,我对标记为“数据”的工作表感兴趣(我已经展示了 2 行的一部分):
<?xml version='1.0'?>
<?mso-application progid='Excel.Sheet'?>
<s:Workbook xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:s="urn:schemas-microsoft-com:office:spreadsheet">
<s:Styles>
...
</s:Styles>
<s:Worksheet s:Name="Description">
...
</s:Worksheet>
<s:Worksheet s:Name="Data">
<s:Table s:DefaultColumnWidth="100">
<s:Row>
<s:Cell s:StyleID="Bold">
<s:Data s:Type="String">Timestamp [msec]</s:Data>
</s:Cell>
<s:Cell s:StyleID="Bold">
<s:Data s:Type="String">Heater [C]</s:Data>
</s:Cell>
...
</s:Row>
<s:Row>
<s:Cell s:StyleID="Default">
<s:Data s:Type="Number">35</s:Data>
</s:Cell>
<s:Cell s:StyleID="Default">
<s:Data s:Type="Number">42.02</s:Data>
</s:Cell>
...
</s:Row>
</s:Table>
</s:Worksheet>
...
这是我试图用来访问数据值的python代码(例如“35”、“42.02”):
import xml.etree.ElementTree as Xet
name_space = {"ss": "urn:schemas-microsoft-com:office:spreadsheet"}
cell_label = '{%s}Cell' % name_space["ss"]
tree = Xet.parse(data_filepath)
root = tree.getroot()
data_sheet = root[2]
table = data_sheet[0]
print(table.findall(cell_label))
这基本上给了我“[]”作为输出,但我确信“table”指的是正确的东西,因为我已经尝试打印它。如何迭代访问最内层标签的值以生成表格(列表列表),以便将其转换为 pandas 数据框,然后将其保存为 csv?
任何建议都会很棒!如果您也能具体一点,我将不胜感激,因为我真的不知道这里的语法细节。谢谢 :)
解决方案
推荐阅读
- javers - 使用 OpenJPA 2.4.1 配置 JaversSQLRepository 的问题
- android - 仅向 Android 上的特定用户发送更新
- generics - Kotlin 泛型:违反直觉的类型推断和使用 out 关键字检查
- python - 为什么我使用乌龟写法时屏幕闪烁?
- c# - 如何使用 Onedrive Graph API 删除用户对项目的权限?
- python - Python 不能在函数定义之外使用 **
- node.js - 从角度提交多图像表单后未定义请求
- c++ - 如何将对象类的方法作为 std::function 传递?
- javascript - TinyMCE - 当编辑器处于模态时,子菜单显示在屏幕顶部
- swift - 如何使 NSView 透明