Задать вопрос
@DrPalmer

Как здесь правильно сделать split?

Есть вот такой кусок кода, но при обработке, выдает ошибку. Суть в том, что мне нужно разделить название машины из vm['name'] и передать в return
Только изучаю python, и как не игрался с типом данных, не помогает. Хельп:(
Апи возвращает параметр в vm['name'] типа aff-java-8.node.eu.consul

Traceback (most recent call last):
  File "/Users/palmer/Documents/python/forforum.py", line 17, in <module>
    b = get_next_hostname('aff-java-8.node.eu.consul')
  File "/Users/palmer/Documents/python/forforum.py", line 13, in get_next_hostname
    y = '%s-%s-%d.node.eu.consul' % (parts[0], parts[1], str(parts[2]) + 6)
TypeError: can only concatenate str (not "int") to str


import requests
import json
import re

response = requests.get('http://127.0.0.1/asl_real.json')
asl_vms = json.loads(response.text)
vms = {}

def get_next_hostname():
    for vm in asl_vms:
        hostname = vm['name']
        parts = hostname.split('-')
        y = '%s-%s-%d.node.eu.consul' % (parts[0], parts[1], str(parts[2]) + 6)
    return y


b = get_next_hostname('aff-java-8.node.eu.consul')
print(b)
  • Вопрос задан
  • 172 просмотра
Подписаться 1 Простой Комментировать
Ответ пользователя soremix К ответам на вопрос (2)
SoreMix
@SoreMix Куратор тега Python
yellow
can only concatenate str (not "int") to str


Соединить строку можно только со строкой (не с числом)
Вы соединяете строку с числом:
str(parts[2]) + 6

Если и надо добавить 6 к концу строки - то делаете число строкой:
str(parts[2]) + '6'

Если подразумевалось что число из parts[2] надо увеличить на 6 - делаем его числом и прибавляем к числу
int(parts[2])+6
Ответ написан