假设我有一个数据列表
data= ['Mom','Dad',1,'Dog','World']
我想用这些字符串格式化另一个字符串,但我希望格式化为如果data
中的元素是一个字符串,那么它应该用引号括起来。我可以使用流控制,但宁可只使用字符串格式。
例如,所需的输出类似于
You are my 'Mom'
You are my 'Dad'
You are my 1 #Notice that the 1 is an int and is not surrounded by quotes
You are my 'Dog'
You are my 'World'
有没有办法格式化?
答案 0 :(得分:3)
您可以使用!r
格式转换说明符:
>>> data= ['Mom','Dad',1,'Dog','World']
>>> for item in data:
... print('you are my {!r}'.format(item))
...
you are my 'Mom'
you are my 'Dad'
you are my 1
you are my 'Dog'
you are my 'World'
此格式使用__repr__
而不是__str__
(默认设置)。由于str.__repr__
添加了引号,因此它可以达到预期效果。
答案 1 :(得分:0)
另一种方法只是为了弥补我之前对问题的误解(实际上只是@mgilsons方法的一种变体):
fmt = "You are my {!r}"
print(*map(fmt.format, data), sep='\n')
打印出想要的结果。
答案 2 :(得分:0)
虽然更详细,但一个简单的if语句应该起作用
You are my 'Mom'
You are my 'Dad'
You are my 1
You are my 'Dog'
You are my 'World'
输出
build/resources/*