2010-08-31 12 views
8

Tengo un código:pitón: no se puede concatenar 'str' y objetos 'tupla' (! Debiera obras)

print "bug " + data[str.find(data,'%')+2:-1] 
temp = data[str.find(data,'%')+2:-1] 
time.sleep(1) 
print "bug tuple " + tuple(temp.split(', ')) 

Y después de esto mis aplicación muestra:

bug 1, 2, 3 Traceback (most recent call last): File "C:\Python26\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 312, in RunScript exec codeObject in main.dict File "C:\Documents and Settings\k.pawlowski\Desktop\atsserver.py", line 165, in print "bug tuple " + tuple(temp.split(', ')) TypeError: cannot concatenate 'str' and 'tuple' objects

I no sé lo que hago mal print tuple ('1, 2, 3' .split (',')) funciona correctamente.

+2

¡En caso de duda, pruébelo en el intérprete interactivo! '>>>' ftw! – jathanism

Respuesta

14
print tuple(something) 

puede trabajar debido a la impresión va a hacer un str implícita() en el argumento, pero y la expresión como

"" +() 

no funciona. El hecho de que pueda imprimirlos individualmente no hace la diferencia, no puede concatenar una cadena y una tupla, debe convertir cualquiera de ellas. Es decir.

print "foo" + str(tuple("bar")) 

Sin embargo, dependiendo de str() para la conversión probablemente no dará los resultados deseados. Se unen ordenadamente usando un separador utilizando "". Unirse por ejemplo

2

cambiarlo a

print "bug tuple ", tuple(temp.split(', ')) 
+0

esto es;) gracias. Soy estúpido después de muchas horas de codificación ...;) – CarolusPl

+0

Duerme un poco ... – PaulMcG

3

¿Por qué cree que debería funcionar?

intento:

print "bug tuple " + str(tuple(temp.split(', '))) 
0

Por qué tupla por la división, que tiene la secuencia para una lista, excepto el un paréntesis, por qué no:

print "bug tuple (%s)" % '1, 2, 3' 
0

No hay necesidad de tuple(), a raíz de las obras,

outstr = str((w,t)) # (w,t) is my tuple 
Cuestiones relacionadas