此示例代码打印文件中一行的表示。它允许在一行中查看其内容,包括像#include <iostream>
using namespace std;
int main()
{
int Pass;
cout << "Enter Pass Please";
cin >> Pass;
switch (Pass)
{
case 1996:
{
cout << "O" << endl;
}
break;
case 2015:
{
cout << "N\n";
}
break;
default:
cout << "Z" << endl;
break;
}
system("PAUSE");
}
这样的控制字符 - 所以我们将其称为&#34; raw&#34;线的输出。
'\n'
但是,输出显示为每个末尾添加了print("%r" % (self.f.readline()))
个字符,但不在文件中。
'
如何摆脱输出周围的单引号?
(Python 2.7和3.6中的行为相同。)
答案 0 :(得分:5)
%r
获取字符串的repr
表示。它可以根据需要转义换行符等,但也会添加引号。要解决此问题,请使用索引切片自行删除引号。
print("%s" %(repr(self.f.readline())[1:-1]))
如果您正在打印这一切,那么您根本不需要将其传递给字符串格式化程序
print(repr(self.f.readline())[1:-1])
这也有效:
print("%r" %(self.f.readline())[1:-1])
答案 1 :(得分:3)
尽管这种方法过于苛刻,但在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