【发布时间】:2018-07-04 06:47:16
【问题描述】:
我正在开发一个 Python(3.6) 项目,在该项目中我需要将一个整数值附加到多行字符串。
这是我的代码:
for var in list(range(1, no_of_svc + 1)):
svar = str(var)
print(type(svar))
port = type(data['configuration']['svc' + svar]['port']['port'])
print(port)
port = str(data['configuration']['svc' + svar]['port']['port'])
deployments = deployment + '''\n
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ''' + data['deployment_name'] + '''-''' + data['configuration']['svc' + str(var)]['name'] + '''
labels:
#Project ID
app: ''' + data['configuration']['svc' + str(var)]['name'] + '''
spec:
#Run two instances of our application
replicas: ''' + data['configuration']['svc' + str(var)]['replicas'] + '''
template:
metadata:
labels:
app: ''' + data['configuration']['svc' + str(var)]['name'] + '''
spec:
#Container details
containers:
- name: ''' + data['configuration']['svc' + str(var)]['versions']['v1']['name'] + '''
image: ''' + data['configuration']['svc' + str(var)]['versions']['v1']['image'] + '''
imagePullPolicy: Always
#Ports to expose
ports:
- containerPort: ''' + port + '''
'''
正如您在上面的代码中看到的,我已将port 转换为字符串,甚至print(type(svar)) 和print(port) 的输出为<class 'str'>,但仍然无法正常工作。
这是错误信息:
- containerPort: ''' + port + '''
TypeError: must be str, not int
我已使用
format方法将其转为有效:
no_of_svc = int(data['configuration']['no_of_svc'])
deployment = ''
deployments = ''''''
for var in list(range(1, no_of_svc + 1)):
deployments = deployment + '''\n
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {}
labels:
#Project ID
app: {}
spec:
#Run two instances of our application
replicas: {}
template:
metadata:
labels:
app: {}
spec:
#Container details
containers:
- name: {}
image: {}
imagePullPolicy: Always
#Ports to expose
ports:
- containerPort: {}
'''.format(data['deployment_name'] + '-' + data['configuration']['svc' + str(var)]['name'],
data['configuration']['svc' + str(var)]['name'],
data['configuration']['svc' + str(var)]['replicas'],
data['configuration']['svc' + str(var)]['name'],
data['configuration']['svc' + str(var)]['versions']['v1']['name'],
data['configuration']['svc' + str(var)]['versions']['v1']['image'],
data['configuration']['svc' + str(var)]['port']['port'])
print(deployments)
有什么问题?
【问题讨论】:
-
哪一行出现错误?
-
更新了,请再看一遍!
-
为什么不放在 str(port) 中?
-
这是使用
format()的充分理由之一。deployments = """blah {foo} blah {bar}""".format(foo=config['foo'], bar=bar) -
你怎么知道是
port?它可能是deployment,它是同一语句的一部分或该字符串中的任何其他值。出现错误消息是因为port在字符串的末尾,请检查所有其他消息。
标签: python string python-3.x typeerror string-concatenation