2012-11-17 42 views
-3

我對如何做到這一點缺乏想法我真的需要一些幫助我試圖根據輸入XML文件生成HTML代碼並運行到屬性錯誤,問題是我正在使用「TR_TEMPLATE ='\ n'.join(TR_TEMPLATE)」,它變成了一個字符串,後來再次嘗試追加「TR_TEMPLATE.append('{{}}''。 )「這是造成一個錯誤..我不能刪除加入首先,我該如何繼續?如何在加入後追加到模板

我的代碼: -

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' 
+0

爲什麼你不能刪除第一個地方的連接?如果你可以儘可能長的把事情放在一個列表中,然後在最後轉換成一個字符串,它會簡單得多(可能效率更高,但這並不重要)。另外,爲什麼對原始列表使用與連接字符串相同的變量名稱?如果你使用不同的變量,它會更容易閱讀。 – abarnert

+0

@abarnert - 如果我這樣做,我沒有得到正確的輸出。請參閱我的當前輸出http://pastie.org/5390348和預期的輸出http://pastie.org/5390312 – user1795998

+0

嗯,你沒有通過這種方式獲得正確的輸出或任何輸出。是什麼讓你覺得這會解決任何問題? PS,爲什麼23行的href沒有引號?你能顯示實際產生錯誤輸出的代碼,而不是一個甚至沒有那麼遠的不同版本嗎? – abarnert

回答

0

這裏至少有四種可能性,從最簡單也可能最好到最噩夢。

首先,你可以放棄第26行。雖然你說「我不能刪除加入首先」,似乎沒有任何好的理由。

你最終保證將它加入第33行,並且在此之前你永遠不會使用該值,除了追加更多的字符串。那麼,爲什麼26號線呢?

其次,可以從該行更改26:

TR_TEMPLATE = '\n'.join(TR_TEMPLATE) 

這樣:

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

換句話說,而不是從字符串到一個字符串列表壓扁它,壓平它從一個字符串列表到一個字符串列表 - 然後您可以繼續添加更多字符串並再次展平。

第三,您可以使TR_TEMPLATE爲字符串而不是列表中的第一位。將第13行更改爲括號。然後,無論您撥打TR_TEMPLATE.append(foo),而只需撥打TR_TEMPLATE += foo + '\n'即可。然後,您可以廢棄第26行,並將第33行更改爲刪除多餘的「\ n」,而不是加入。

最後,你可以跟蹤你是否已經加入TR_TEMPLATE,如果你還沒有加入append,如果你沒有加入,你可以連接append。 (或者,不要保持跟蹤,你可以使用類型切換,但這使得它更醜陋。)

+0

如何刪除這篇文章? – user1795998