2017-12-27 12 views
0

Ich habe 3 variablePython: Verkettung Variable in Python

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

wie es dynamisch drucken? jetzt versuche ich, wie dieses

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

Aber es gibt Fehler.

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

lesen docs über 'getattr()' ' –

+0

umfassen .text' Erweiterung innerhalb der Formatierung wie' print ("obj.col" + str (x) + "_ expense.text") ' – Sanket

+2

Sie könnten Überlegen Sie sich, 'eval (" print (obj.col "+ str (x) +" _kosten.text) " –

Antwort

5

Sie [Python]: getattr(object, name[, default]) verwenden:

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

oder, um sicherzustellen, dass Sie nicht AttributeError erhalten, wenn Indizes vermasselt, könnten Sie die print ersetzen zu diesem (nicht so leicht zu lesen) Formular:

-2

Try this:

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

wird nicht funktionieren. Python bietet nicht für die Herstellung von Variablennamen, zumindest nicht direkt – ShpielMeister

1

Ich hoffe, dies wird Ihnen helfen:

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

Quote 'col' in der 2. Zeile. – CristiFati

+0

@ CristiFati Done.thank you ..! – Pradam

0

Ich bin nicht sicher, aber wenn Sie möchten, Variablen und entsprechende Werte schaffen. Es hängt davon ab, wo Sie Variablen verwenden möchten. auch

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])