データに基づいて C++ コードを生成する python スクリプトを書いています。
または改行string
などの文字で構成できる文字列を含むpython変数があります。"
コード生成のためにこの文字列をエスケープする最良の方法は何ですか?
データに基づいて C++ コードを生成する python スクリプトを書いています。
または改行string
などの文字で構成できる文字列を含むpython変数があります。"
コード生成のためにこの文字列をエスケープする最良の方法は何ですか?
私が使用する方法は、C++ 文字列は基本的に文字とエスケープに関して Javascript/JSON 文字列と同じ規則に従うという観察に基づいています。
バージョン 2.6 以降の Python には、Python データを JSON にシリアル化できる JSON ライブラリが組み込まれています。したがって、引用符で囲む必要がないと仮定すると、コードは次のようになります。
import json
string_for_printing = json.dumps(original_string).strip('"')
私はこれまで問題なくこのコードを使用しています:
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進数のエスケープを使用します。