0

Pythonを使用して、別のデバイスで使用されるいくつかのXMLファイルを生成しています。私はうまくいく解決策を持っていますが、私はそれを改善しようとしています。XMLに含まれなければならないものの1つは、スケジュールです。月曜日のエントリはXMLでどのように表示されるかを次に示します。

<Monday open="08:00" close="17:00" />

PythonのElementTreeでこれを生成するのに問題はありませんが、現在、毎日のコード行が残っています。したがって、私のPythonコードのスニペットは次のようになります。

SubElement(schedule, 'Monday', open='08:00', close='17:00')
SubElement(schedule, 'Tuesday', open='08:00', close='17:00')
.
.
.
SubElement(schedule, 'Sunday', open='08:00', close='17:00')

XMLファイルには複数のスケジュールが含まれることになり、そのすべてを入力することは不必要に繰り返されるように思われます。これの代わりに、リストを反復処理して、SubElementに渡すパラメーターを作成する関数を作成したいと思いました。その関数の一部として、SubElement呼び出しの時間を置き換えるためにこの文字列を作成しました。

"open=" + "\'08:00\'" + ", " + "close=" + "\'17:00\'"

これを印刷すると、コードを長い道のりで入力したときにSubElementに渡すものと同じように見えます。ただし、スクリプトを実行しようとすると次のエラーが発生するのとは明らかに同じではありません。

File "C:\Python27\lib\xml\etree\ElementTree.py", line 528, in SubElement
   attrib = attrib.copy()
AttributeError: 'str' object has no attribute 'copy'

SubElementコードを見ましたが、辞書を期待しているようです。ただし、長い道のりで入力すると、入力として辞書を提供していないように見えるので、関数がその入力を受け入れる必要があるのに、私には同等であると思われる文字列を受け入れない理由がわかりません。 。私がやろうとしていることを実行する方法はありますか、それともコードの繰り返し行がたくさんありますか?

4

1 に答える 1

1

「属性の文字列」ではなく、属性のディクショナリをSubElementに渡す必要があります。

SubElement(schedule, 'Sunday', {'open': '08:00', 'close': '17:00'})

また

times = {'open': '08:00', 'close': '17:00'}
SubElement(schedule, 'Sunday', times)
于 2012-12-28T15:07:13.407 に答える