Как избавиться от одинарных кавычек вокруг представления строки?
Этот пример кода печатает представление строки из файла. Это позволяет просматривать его содержимое, включая управляющие символы, такие как '\n'
на одной строке - поэтому мы называем это "необработанным" выводом строки.
print("%r" % (self.f.readline()))
Вывод, однако, появляется с '
символы, добавленные к каждому концу, которых нет в файле.
'line of content\n'
Как избавиться от одинарных кавычек вокруг выхода?
(Поведение одинаково в Python 2.7 и 3.6.)
2 ответа
%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