此示例代码打印文件中一行的表示。它允许'\n'
在一行中查看其内容,包括控制字符,如 ,因此我们将其称为该行的“原始”输出。
print("%r" % (self.f.readline()))
但是,输出显示的'
每个末端都添加了不在文件中的字符。
'line of content\n'
如何摆脱输出周围的单引号?
(行为在 Python 2.7 和 3.6 中是相同的。)
此示例代码打印文件中一行的表示。它允许'\n'
在一行中查看其内容,包括控制字符,如 ,因此我们将其称为该行的“原始”输出。
print("%r" % (self.f.readline()))
但是,输出显示的'
每个末端都添加了不在文件中的字符。
'line of content\n'
如何摆脱输出周围的单引号?
(行为在 Python 2.7 和 3.6 中是相同的。)
%r
接受repr
字符串的表示。它可以根据需要转义换行符等,但还会添加引号。要解决此问题,请使用索引切片自己去除引号。
print("%s" %(repr(self.f.readline())[1:-1]))
如果这就是您要打印的全部内容,则根本不需要将其传递给字符串格式化程序
print(repr(self.f.readline())[1:-1])
这也有效:
print("%r" %(self.f.readline())[1:-1])
尽管这种方法有点矫枉过正,但在 Python 中,您可以子类化大多数(如果不是全部)内置类型,包括str
. 这意味着您可以定义自己的字符串类,其表示形式是您想要的。
以下说明了如何使用该功能:
class MyStr(str):
""" Special string subclass to override the default representation method
which puts single quotes around the result.
"""
def __repr__(self):
return super(MyStr, self).__repr__().strip("'")
s1 = 'hello\nworld'
s2 = MyStr('hello\nworld')
print("s1: %r" % s1)
print("s2: %r" % s2)
输出:
s1: 'hello\nworld'
s2: hello\nworld