Điều bạn đang tìm kiếm được gọi là cờ chuyển đổi. Và điều đó nên được quy định như thế này
>>> print('you say:{0!r}'.format("i love you"))
you say:'i love you'
Trích dẫn Python 3 của official documentation,
Ba cờ chuyển đổi hiện đang được hỗ trợ: '!s'
trong đó kêu gọi str()
trên giá trị, '!r'
trong đó kêu gọi repr()
và '!a'
trong đó kêu gọi ascii()
.
Xin lưu ý rằng, Python 2 chỉ hỗ trợ !s
và !r
. Theo
Hai cờ chuyển đổi các Python 2 của official documentation, hiện đang được hỗ trợ: '!s'
trong đó kêu gọi str()
trên giá trị, và '!r'
trong đó kêu gọi repr()
.
Trong Python 2, bạn có thể đã làm một cái gì đó giống như
>>> 'you say: %r' % "i love you"
"you say: 'i love you'"
Nhưng ngay cả trong Python 2 (cũng bằng Python 3), bạn có thể viết tương tự với !r
với format
, như thế này
>>> 'you say: {!r}'.format("i love you")
"you say: 'i love you'"
Trích dẫn ví dụ từ official documentation,
Thay %s
và %r
:
>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')
"repr() shows quotes: 'test1'; str() doesn't: test2"
@wim Không tìm thấy việc phát hành thực tế nó đã được giới thiệu nhưng theo tài liệu nó có sẵn từ v3.2 – thefourtheye