如何为生成的C ++转义字符串?

时间:2013-02-18 20:53:50

标签: python escaping code-generation

我正在编写基于数据生成C ++代码的python脚本。

我有python变量string,其中包含一个可以组成的字符串 像"或换行符这样的字符。

为代码生成转义此字符串的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

我使用的方式基于C ++字符串的基本观察 遵守有关字符和逃避的相同规则作为Javascript / JSON字符串。

Python 2.6版本有一个内置的JSON库,可以序列化Python 数据转换为JSON。因此,代码是,假设我们不需要封闭 引用,如下:

import json
string_for_printing = json.dumps(original_string).strip('"')

答案 1 :(得分:1)

我使用此代码,到目前为止没有问题:

def string(s, encoding='ascii'):
   if isinstance(s, unicode):
      s = s.encode(encoding)
   result = ''
   for c in s:
      if not (32 <= ord(c) < 127) or c in ('\\', '"'):
         result += '\\%03o' % ord(c)
      else:
         result += c
   return '"' + result + '"'

它使用八进制转义来避免所有可能存在问题的字符。