2013-02-18 67 views
5

मैं पाइथन लिपि लिख रहा हूं जो डेटा के आधार पर सी ++ कोड उत्पन्न कर रहा है।उत्पन्न सी ++ के लिए स्ट्रिंग से कैसे बचें?

मेरे पास पाइथन वैरिएबल string है जिसमें एक स्ट्रिंग है जिसे " या न्यूलाइन जैसे अक्षरों के बनाया जा सकता है।

कोड निर्माण के लिए इस स्ट्रिंग से बचने का सबसे अच्छा तरीका क्या है?

+1

[jinja] (http://jinja.pocoo.org/docs/templates/) जैसे टेम्पलेट इंजन का उपयोग करके यह सबसे अच्छा हल नहीं किया गया है जो पहले से ही अक्षर से बच सकता है; मुझे पता है कि जावा कोड उत्पन्न करते समय मैंने पहले ऐसा ही किया है - मुझे पता है कि मैंने आपके प्रश्न का गलत व्याख्या किया होगा। – sotapme

उत्तर

3

जिस तरह से मैं उपयोग करता हूं वह इस अवलोकन पर आधारित है कि सी ++ तार मूल रूप से गुणों के संबंध में समान नियमों का पालन करते हैं और जावास्क्रिप्ट/JSON स्ट्रिंग के रूप में भागते हैं।

संस्करण 2.6 के बाद से पायथन में एक अंतर्निहित JSON लाइब्रेरी है जो JSON में Python डेटा को क्रमबद्ध कर सकती है। इसलिए, कोड, यह मानते हुए है हम उद्धरण संलग्न इस प्रकार है बस के रूप में की जरूरत नहीं है,:

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

स्ट्रिंग में यूनिकोड वर्ण होने पर छोड़कर। या जब यह एक उद्धरण के साथ समाप्त होता है। बाइनरी डेटा के लिए भी काम नहीं करता है। सी ++ के लिए मनमाने ढंग से डेटा से बचने के दौरान इसे पढ़ने योग्य रखना उतना आसान नहीं है जितना लगता है - आखिरी बार मैंने ऐसा किया था, मैंने बस एक ही बाइट को \ xNN रूप में बदल दिया। –

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

यह अष्टाधारी का उपयोग करता है से बचने के लिए निकल जाता है सभी संभावित समस्याग्रस्त पात्र।