2017-12-27 8 views
0

における連結変数は、私はそれがダイナミックな印刷方法variableのpython:pythonの

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

3を持っていますか? 今私はこの

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

ようにしようとしています。しかし、それは、エラーを与えます。

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

読むのドキュメントは、()' –

+0

は ''プリント( "obj.col" + STR(X)+ "_ expense.text") ' – Sanket

+2

あなたはまた、可能性のようなフォーマットの内部.text'拡張子を含めます'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

2行目に 'col'を引用します。 – CristiFati

+0

@CristiFati Done.Thank you ..! – Pradam

0

私はわかりませんが、あなたは、変数と対応する値を作成する場合。 変数を使用する場所によって異なります。 GETATTR `について

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]) 
関連する問題