有没有一种方法可以基于xml信息编写可编写代码的代码?(Python)

时间:2020-08-03 07:48:55

标签: python xml

我正在尝试基于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文件等的详细信息,
但我不了解如何自动执行翻译过程。

谢谢您的时间。

2 个答案:

答案 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提供参数,然后在脚本中对其进行处理。