-3

これを行う方法についてのアイデアが不足していますか?本当に助けが必要です...入力XMLファイルに基づいてHTMLコードを生成しようとしていますが、属性エラーが発生します。問題は、「TR_TEMPLATE='\」を使用していることです。 n'.join(TR_TEMPLATE) "は文字列になりますが、後でコードを追加しようとすると、エラーが発生する" TR_TEMPLATE.append(' {{}}'。format(col))"が追加されます。削除できません。そもそも参加、どうすればいいですか?

私のコード:-

    http://pastie.org/5390303

入力は以下です

http://pastie.org/5390316

期待される出力:-

http://pastie.org/5390312

属性エラー

Traceback (most recent call last):
 File "C:\Dropbox\scripts\test.py", line 54, in <module>
crInfo = CRlistToTable(CRlist)
File "C:\Dropbox\scripts\test.py", line 31, in CRlistToTable
TR_TEMPLATE.append('    <td>{{}}</td>'.format(col))
AttributeError: 'str' object has no attribute 'append'
4

1 に答える 1

0

ここには、最も単純でおそらく最良のものから最も悪夢のようなものまで、少なくとも 4 つの可能性があります。

まず、26行目をスクラップするだけです。「そもそも結合を削除することはできません」と言っていますが、それには正当な理由がないようです。

最終的には 33 行目で結合することが保証され、さらに文字列を追加する場合を除いて、その前に値を使用することはありません。では、なぜ 26 行目があるのでしょうか。

次に、26 行目を次のように変更できます。

TR_TEMPLATE = '\n'.join(TR_TEMPLATE)

これに:

TR_TEMPLATE = ['\n'.join(TR_TEMPLATE)]

つまり、文字列のリストから 1 つの文字列にフラット化するのではなく、文字列のリストから 1 つの文字列のリストにフラット化します。これにより、さらに文字列を追加して再びフラット化することができます。

TR_TEMPLATE第三に、そもそもリストの代わりに文字列を作成できます。行 13 を変更して、括弧を除外します。次に、 を呼び出すすべての場所TR_TEMPLATE.append(foo)で、代わりに を実行しますTR_TEMPLATE += foo + '\n'。次に、行 26 を破棄し、行 33 を変更して、結合する代わりに余分な末尾の '\n' を削除することができます。

TR_TEMPLATE最後に、まだ参加しているかどうかを追跡できます。参加していappendない場合は連結します。(または、追跡する代わりに、タイプの切り替えを使用することもできますが、それはさらに醜いものになります。)

于 2012-11-17T01:13:19.387 に答える