我正在尝试基于xml文件自动生成python脚本。 对于一个简化的示例,我想将以下xml(#1)转换为下面的Python脚本(#2)。
#1 Xml文件(要翻译)
1.xlsx
<Code CodeID="1">
<Settings Setting='OpenFile'>
</Settings>
<Properties>
<Configuration>
<FieldInfo>
<Field name="Account" size="255" source="File: 1.xlsx|`Sheet1`" type="V_String" />
<Field name="PY" source="File: 1.xlsx|`Sheet1`" type="Double" />
<Field name="CY" source="File: 1.xlsx|`Sheet1`" type="Double" />
</FieldInfo>
</Configuration>
</Properties>
</Code>
#2 Python脚本(翻译)
Import pandas as pd
with pd.ExcelFile('1.xlsx') as xlsx:
df = pd.read_excel(xlsx, 'Sheet1')
df.astype({'Account': 'object', 'PY': 'float64', 'CY': 'float64'}).dtypes
我刚接触Python和编程,我想知道应该从哪里开始。
我想我可以搜索和研究有关如何解析xml文件等的详细信息,
但我不了解如何自动执行翻译过程。
谢谢您的时间。
答案 0 :(得分:0)
您绝对可以通过解析XML创建自己的生成器,然后在带有子流程模块的主脚本中运行它。如果您希望创建允许用户创建自己的宏的用户界面,也可以使用块状代码生成器来完成此类工作。
答案 1 :(得分:0)
您可以使用XSL将XML转换为文本(例如python脚本)。 XSL功能强大,但对于初学者来说很复杂。
这个简单的XSL示例产生的文本与您输出的文本很接近
<xsl:stylesheet version="1.0">
<xsl:output method="text" indent="yes"/>
<xsl:template match="/">
Import pandas as pd
with pd.ExcelFile('1.xlsx') as xlsx:
df = pd.read_excel(xlsx, 'Sheet1')
<xsl:for-each select="//Field">
df.astype({'<xsl:value-of select="@name"/>': 'object',
</xsl:for-each>
}).dtypes
</xsl:template>
</xsl:stylesheet>
您需要扩展它以处理所有数据类型和任何其他对象属性。 (例如,将“ float64”转换为“ double”),作为XSL解决方案的一部分。但是@AKX是正确的,最好使用XML提供参数,然后在脚本中对其进行处理。