python: невозможно объединить объекты 'str' и 'tuple' (это должно работать!)

У меня есть код:

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

И после этого мое приложение отобразит:

bug 1 , 2, 3 Traceback (самый последний позвони последним): File "C: \ Python26 \ Lib \ сайт-пакеты \ Pythonwin \ pywin \ рамки \ scriptutils.py", строка 312, в RunScript exec codeObject в main . dict Файл "C: \ Documents and Настройки \ k.pawlowski \ Desktop \ atsserver.py», строка 165, в выведите «bug tuple» + tuple (temp.split (',')) TypeError: не может объединять 'str' и 'tuple' объекты

Я не знаю, что я делаю неправильно. print tuple ('1, 2, 3'.split (', ')) работает правильно.

10
задан CarolusPl 31 August 2010 в 13:51
поделиться

4 ответа

print tuple(something)

может работать, потому что print выполнит неявную функцию str() для аргумента, но выражение типа

"" + ()

не работает. Тот факт, что вы можете распечатать их по отдельности, не имеет значения, вы не можете объединить строку и кортеж, вам нужно преобразовать любой из них. т.е.

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

Однако зависимость от str() для преобразования, вероятно, не даст желаемых результатов. Аккуратно соедините их, используя разделитель, например ",".join

18
ответ дан 3 December 2019 в 17:18
поделиться

Почему вы думаете, что это должно работать?

попробуйте:

print "bug tuple " + str(tuple(temp.split(', ')))
3
ответ дан 3 December 2019 в 17:18
поделиться

Измените его на

print "bug tuple ", tuple(temp.split(', '))
2
ответ дан 3 December 2019 в 17:18
поделиться

Зачем разбивать кортеж, у вас есть готовая строка для одного, кроме круглых скобок, почему бы и нет:

print "bug tuple (%s)" % '1, 2, 3'
0
ответ дан 3 December 2019 в 17:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: