Я пишу утилиту (которая, случается, находится в python), которая генерирует вывод в виде TCL script. Учитывая некоторую произвольную строковую переменную (не unicode) в python, я хочу создать линию TCL, например
set s something
... который установит переменную TCL 's
' этой точной строке, независимо от того, какие странные символы в ней. Не становясь слишком странным, я не хочу, чтобы результат был бесполезным, чем нужно. Я считаю, что достойный подход
-
если строка не пуста и содержит только буквенно-цифровые символы, а некоторые символы типа
.-_
(но определенно не$"{}\
), то ее можно использовать как-is; -
если он содержит только печатные символы, а не двойные кавычки или фигурные фигурные скобки (и не заканчивается обратным слэшем), просто поместите
{}
вокруг него; -
положите
""
вокруг него после использования\
экранов для"
{
}
\
$
[
]
, а\nnn
-печатать символы.
Вопрос: есть ли полный набор символов, которые нужно избегать внутри двойных кавычек? Я не могу найти это в документах. И я что-то пропустил (я почти пропустил, что строки для (2) не могут закончиться, например,).
Я знаю, что есть много других строк, которые могут быть указаны {}
, но их трудно идентифицировать легко. Кроме того, похоже, что непечатные символы (в частности, новая строка) в порядке с (2), если вы не возражаете, чтобы они буквально присутствовали в выводе TCL.