如何格式化字符串和字符串一起使用

2024-05-19 07:56:44 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个数据列表

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'

有没有一种方法可以格式化它


Tags: 数据字符串you元素列表worlddatais
3条回答

另一种方法只是为了弥补我之前对问题的误解(实际上只是@mgilsons方法的一种变体):

fmt = "You are my {!r}"
print(*map(fmt.format, data), sep='\n')

打印出想要的结果

虽然更加冗长,但一个简单的if语句应该可以工作

data= ['Mom','Dad',1,'Dog','World']

for d in data:
    print("You are my {}".format("'{}'".format(d) if isinstance(d, str) else d))

输出

You are my 'Mom'
You are my 'Dad'
You are my 1
You are my 'Dog'
You are my 'World'

您可以使用!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__加了引号,所以它就解决了您的期望

相关问题 更多 >

    热门问题