我正在编写一个实用程序(恰好在 python 中),它以 TCL 脚本的形式生成输出。给定python中的一些任意字符串变量(不是unicode),我想生成一个TCL行
set s something
...这会将 TCL 变量 ' s
' 设置为该确切的字符串,而不管其中有什么奇怪的字符。没有变得太奇怪,我不想让输出比需要的更混乱。我相信一个体面的方法是
如果字符串不为空并且只包含字母数字和一些字符
.-_
(但绝对不是$"{}\
),那么它可以按原样使用;如果它只包含可打印的字符并且没有双引号或花括号(并且不以反斜杠结尾),那么只需将它放在
{}
它周围;否则,在对 使用转义符
""
后将其放置 ,对非打印字符使用转义符。\
"
{
}
\
$
[
]
\nnn
问题:这是需要在双引号内转义的完整字符集吗?我在文档中找不到这个。我错过了什么吗(例如,我几乎错过了 (2) 的字符串不能以 \ 结尾)。
我知道还有很多其他的字符串可以被 引用 {}
,但似乎很难轻松识别它们。此外,如果您不介意 TCL 输出中确实存在非打印字符(特别是换行符),那么 (2) 看起来是可以的。