Я хочу использовать repr()
для получения строкового литерала в кодировке Python (который я могу вставить в некоторый исходный код), но я бы предпочел строку с тройными кавычками с реальными символами новой строки, а не escape-последовательность \n
.
Я мог бы постобработать строку, чтобы преобразовать \n
обратно в символ новой строки и добавить еще пару кавычек, но тогда, если \\n
находится в источнике, тогда я не хотел бы соответствовать этому.
Какой самый простой способ сделать это?
Пример ввода:
foo?
bar
Или как строка Python:
'foo?\nbar'
Желаемый вывод:
'''foo\xf0\x9f\x92\xa9
bar'''
Тройные-одинарные или тройные-двойные кавычки - это хорошо, но я хочу, чтобы они разбивались на несколько строк.
Что у меня так далеко:
#!/usr/bin/env python
import sys
import re
with open(sys.argv[1], 'r+') as f:
data = f.read()
f.seek(0)
out = "''" + re.sub(r"\\n", '\n', repr(data)) + "''"
f.write(out)
f.truncate()
Я все еще пытаюсь выяснить регулярное выражение, чтобы избежать преобразования сбежавших \n
с.
Цель состоит в том, чтобы, если я вставлю это обратно в исходный файл Python, я получу в точности то же самое, что прочитал.
Я использую Python 2.7.14