%r在格式字符串中做什么?

时间:2019-07-03 05:05:26

标签: python

我正在做一个代码来接受某些文件路径作为命令行参数,然后想看看%r的作用...我尝试了几件事,请仔细阅读以下代码,让我知道%r的作用说明符起作用,为什么在页码前有“ \”。

string1 = "C:\raint\new.txt"

string2 = "%r"%string1
string3 = string2[1:-1]

print "Input String: ",string2           
print "Raw String: ",string3  

string1 = "C:\raint\pint.txt"

string2 = "%r"%string1
string3 = string2[1:-1]

print "Input String: ",string2           
print "Raw String: ",string3            

Output:

Input String: 'C:\raint\new.txt'
Raw String: C:\raint\new.txt
Input String: 'C:\raint\\pint.txt'
Raw String: C:\raint\\pint.txt

2 个答案:

答案 0 :(得分:0)

它是字符串格式化程序,就像还有其他格式化程序一样,例如%s表示字符串,%d表示整数。本质上,当您遇到%s或%r之类的格式化程序时,将在该对象上调用特定方法。如果是%s,则为str()方法;如果为%r,则为repr()方法。一些很好的参考资源是:

  1. Diff between str and repr
  2. Python3 doc
  3. Related stuff for formatters

答案 1 :(得分:0)

%r使用repr()函数进行转换。它返回对象的精确表示。使用repr(),大多数数据类型具有相似的输出,但是我们可以在下面找到区别。

>>> import datetime
>>> date = datetime.date.today()
>>> date
datetime.date(2019, 7, 3)
>>> str(date)
'2019-07-03'
>>> repr(date)
'datetime.date(2019, 7, 3)'