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