Używam małego skryptu Python do generowania binarnych danych, które będą używane w nagłówku C.Pobierz rep z podwójnym cudzysłowem Python
Dane te powinny być zadeklarowane jako char[]
i byłoby miło, gdyby mogło być zakodowane jako ciąg (z odpowiednimi sekwencjami specjalnymi, gdy nie znajdują się w zakresie znaków ASCII), aby nagłówek był bardziej zwarty niż z dziesiętnym lub szesnastkowym kodowaniem macierzy.
Problem polega na tym, że podczas drukowania repr
ciągu w języku Python jest on rozdzielany pojedynczymi cudzysłowami, a C nie podoba się to. Naiwny rozwiązaniem jest zrobić:
'"%s"'%repr(data)[1:-1]
ale to nie działa, gdy jeden z bajtów danych dzieje się cudzysłów, tak że muszę im się uciec zbyt.
Myślę, że prosty replace('"', '\\"')
może wykonać zadanie, ale może istnieje lepsze, bardziej pythonic rozwiązanie tam.
Extra Punkt:
byłoby zbyt wygodne podzielić dane na linii około 80 znaków, ale znowu proste podejście splitting the source string in chunks wielkości 80 nie będzie działać, ponieważ każdy znak zakaz druku trwa 2 lub 3 znaki w sekwencji specjalnej. Dzielenie listy w kawałkach 80 po otrzymaniu repr również nie pomoże, ponieważ może podzielić sekwencję ucieczki.
Wszelkie sugestie?
nie jest "elif" \\\ "". Find (c)! = -1 "taki sam jak" elif c in "\\\" ""? W każdym razie zgadzam się, repr() nie jest rozwiązaniem tutaj i musisz zrobić coś takiego. –
80 zaleceń dla tekstu kolumny nie było oparte na szerokości monitora. Pochodzi z typografii. Spójrz na niektóre gazety: spójrz na tabloidowy wygląd w arkuszu. Jak szerokie są kolumny? –