Что означает: TypeError: не может конкатенировать объекты 'str' и 'list'?

Что означает эта ошибка?

TypeError: не может конкатенировать объекты 'str' и 'list'

Вот часть кода:

for j in ('90.','52.62263.','26.5651.','10.8123.'): if j == '90.': z = ('0.') elif j == '52.62263.': z = ('0.', '72.', '144.', '216.', '288.') for k in z: exepath = os.path.join(exe file location here) exepath = '"' + os.path.normpath(exepath) + '"' cmd = [exepath + '-j' + str(j) + '-n' + str(z)] process=Popen('echo ' + cmd, shell=True, stderr=STDOUT ) print process 

3 Solutions collect form web for “Что означает: TypeError: не может конкатенировать объекты 'str' и 'list'?”

Я не уверен, что вы знаете, что cmd – это list из одного элемента, а не строка.

Изменение этой строки на ниже построит строку, а остальная часть вашего кода будет работать:

 # Just removing the square brackets cmd = exepath + '-j' + str(j) + '-n' + str(z) 

Я предполагаю, что вы использовали скобки только для группировки операций. Это не обязательно, если все находится на одной линии. Если вы хотите разбить его на две строки, вы должны использовать круглые скобки, а не скобки:

 # This returns a one-element list cmd = [exepath + '-j' + str(j) + '-n' + str(z)] # This returns a string cmd = (exepath + '-j' + str(j) + '-n' + str(z)) 

Все, что находится между квадратными скобками в python, всегда является list . Выражения между круглыми скобками оцениваются как нормальные, если в выражении нет запятой, и в этом случае скобки действуют как конструктор tuple :

 # This is a string str = ("I'm a string") # This is a tuple tup = ("I'm a string","me too") # This is also a (one-element) tuple tup = ("I'm a string",) 

Строковые объекты могут быть объединены только с другими строками. Python – это строго типизированный язык. Он не будет принуждать вас к типу.

ты можешь сделать:

 'a' + '1' 

но нет:

 'a' + 1 

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

 my_list.append('a') 

В коде OP есть еще одна проблема:

z = ('0.') а затем for k in z:

Скобки в первом утверждении будут проигнорированы, что приведет к тому, что второй оператор привяжет k сначала к '0' а затем '.' … выглядит как z = ('0.', ) .

  • как изменить случай первой буквы строки?
  • Функция Python для ограничения длины строки до максимальной длины
  • Почему не работает .rstrip ('\ n')?
  • Замена нечисловых символов
  • Строки, на которые не ссылаются dicts?
  • TypeError: принуждение к Unicode: нужна строка или буфер
  • Будет ли все в стандартной библиотеке обрабатывать строки как unicode в Python 3.0?
  • Могу ли я использовать параметр paste0 () в R, чтобы эта функция выполнялась так же быстро, как исходный пример Python?
  • Поиск перестановки символов подстроки в Python
  • Python: анализ ввода, чтобы увидеть, является ли его целым числом, плавающей точкой или строкой
  • Как я могу найти первое вхождение подстроки в строке python?
  • Python - лучший язык программирования в мире.