2017-12-27 281 views
0

串聯可變我有3個variable的Python:在Python

print(obj.col1_expense.text) #test1 
print(obj.col2_expense.text) #test2 
print(obj.col3_expense.text) #test3 

如何打印它的動態? 我現在想這樣

for x in range(1, 4): 
     print("obj.col"+str(x)+"_expense".text) 

但它給錯誤

AttributeError: 'str' object has no attribute 'text' 
+4

約'GETATTR閱讀文檔()' –

+0

包括''像印刷( 「obj.col」 + STR(X)+ 「_ expense.text」)' – Sanket

+2

你也可以格式化內部.text' extention考慮使用'eval(「print(obj.col」+ str(x)+「_ expense.text)」)' –

回答

5

你可以使用[Python]: getattr(object, name[, default])

for x in range(1, 4): 
    print(getattr(obj, "col{}_expense".format(x)).text) 

,或者確保如果搞亂了索引,你不會得到AttributeError,你可以更換print對此(不容易閱讀)形式:

print(getattr(getattr(obj, "col{}_expense".format(x), None), "text", None)) 
-2

試試這個:

for x in range(1, 4): 
    var = "obj.col"+str(x)+"_expense.text"  
    print(var) 
+1

將不起作用。 python不提供製造變量名稱,至少不直接 – ShpielMeister

1

我希望這將幫助你:

for x in range(1,4): 
    col_text = 'col' + str(x) + '_expense' 
    print(getattr(obj,col_text).text) 
+0

在第二行中引用'col'。 – CristiFati

+0

@CristiFati Done.Thank you ..! – Pradam

0

我不知道,但如果你想創建的變量和相應的值。這將取決於你想使用變量的地方。

import pandas as pd 
var = [] 
for x in range(1, 4): 
    var.append("obj.col%s_expense.text" %(x)) 
print(var) 
print(var[0]) 
print(var[1])