8

データに基づいて C++ コードを生成する python スクリプトを書いています。

または改行stringなどの文字で構成できる文字列を含むpython変数があります。"

コード生成のためにこの文字列をエスケープする最良の方法は何ですか?

4

3 に答える 3

5

私が使用する方法は、C++ 文字列は基本的に文字とエスケープに関して Javascript/JSON 文字列と同じ規則に従うという観察に基づいています。

バージョン 2.6 以降の Python には、Python データを JSON にシリアル化できる JSON ライブラリが組み込まれています。したがって、引用符で囲む必要がないと仮定すると、コードは次のようになります。

import json
string_for_printing = json.dumps(original_string).strip('"')
于 2013-02-18T20:53:50.043 に答える
3

私はこれまで問題なくこのコードを使用しています:

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 + '"'

問題になる可能性のあるすべての文字を回避するために、8進数のエスケープを使用します。

于 2013-02-18T21:00:58.257 に答える