如何使用字符串格式化字符串

时间:2016-12-19 18:59:00

标签: python python-3.x

假设我有一个数据列表

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'

有没有办法格式化?

3 个答案:

答案 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/*