Есть ли способ написать код, который пишет код на основе информации xml? (Python) - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь автоматически создать сценарий python на основе файла xml. В качестве упрощенного примера я хочу преобразовать следующий xml (# 1) в сценарий Python ниже (# 2).

# 1 Xml File (To Translate) 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 голосов
/ 04 августа 2020

Вы можете использовать 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 для предоставления параметров, которые затем обрабатываются в вашем скрипте.

0 голосов
/ 03 августа 2020

Вы определенно можете создать свой собственный генератор, проанализировав XML, и запустить его внутри вашего основного скрипта с модулем подпроцесса. Вы также можете использовать генератор блочного кода для такого рода задач, если вы используете sh, чтобы создать пользовательский интерфейс, который позволяет вашим пользователям создавать свои собственные макросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...