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