cof*_*der 160 python string string-formatting
在学习Python艰难之路第21页,我看到这个代码示例:
x = "There are %d types of people." % 10
...
print "I said: %r." % x
Run Code Online (Sandbox Code Playgroud)
为什么%r在这里使用而不是%s?你何时使用%r,何时使用%s?
Ben*_*mes 304
该%s说明符转换使用对象str(),并%r使用其转换repr().
对于某些对象(如整数),它们会产生相同的结果,但是repr()特别之处(对于可能的类型),它通常会返回一个有效的Python语法结果,可以用来明确地重新创建它所代表的对象.
这是一个使用日期的例子:
>>> import datetime
>>> d = datetime.date.today()
>>> str(d)
'2011-05-14'
>>> repr(d)
'datetime.date(2011, 5, 14)'
Run Code Online (Sandbox Code Playgroud)
对于该类型repr()不产生Python语法包括那些指向外部资源,如file,你不能保证在不同的上下文重新.
man*_*lds 15
%r 显示引号:
它会像:
I said: 'There are 10 types of people.'.
Run Code Online (Sandbox Code Playgroud)
如果你曾经使用%s它将是:
I said: There are 10 types of people..
Run Code Online (Sandbox Code Playgroud)
Pra*_*hat 15
使用%rfor调试,因为它显示变量的"原始"数据,但其他数据用于向用户显示.
这就是%r格式化的工作原理; 它以你编写它(或接近它)的方式打印它.这是调试的"原始"格式.这里\n用来向用户显示不起作用.%r显示变量的原始数据的表示.
months = "\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"
print "Here are the months: %r" % months
Run Code Online (Sandbox Code Playgroud)
输出:
Here are the months: '\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug'
Run Code Online (Sandbox Code Playgroud)
从Learn Python the Hard Way中查看此示例.
mac*_*loo 14
这是Ben James答案的一个版本,上面是:
>>> import datetime
>>> x = datetime.date.today()
>>> print x
2013-01-11
>>>
>>>
>>> print "Today's date is %s ..." % x
Today's date is 2013-01-11 ...
>>>
>>> print "Today's date is %r ..." % x
Today's date is datetime.date(2013, 1, 11) ...
>>>
Run Code Online (Sandbox Code Playgroud)
当我跑这个时,它帮助我看到了%r的用处.
| 归档时间: |
|
| 查看次数: |
131610 次 |
| 最近记录: |