Finde alle Zeichenfolgen in Python-Code-Dateien

7

Ich möchte alle Strings in meinem großen Python-Projekt auflisten.

Stellen Sie sich die verschiedenen Möglichkeiten vor, einen String in Python zu erstellen:

%Vor%

Ich brauche ein Werkzeug, das für jeden String in meinem Projekt "filename, linenumber, string" ausgibt. Zeichenfolgen, die mit "\" oder "('')" auf mehrere Zeilen verteilt sind, sollten in einer einzelnen Zeile angezeigt werden.

Irgendwelche Ideen wie das gemacht werden könnte?

    
mbrochh 25.02.2009, 10:44
quelle

6 Antworten

11

Der Vorschlag von unwind, das Ast-Modul in 2.6 zu verwenden, ist gut. (Es gibt auch das undokumentierte _ast-Modul in 2.5.) Hier ist ein Beispielcode für das

%Vor%

Das Problem besteht in mehrzeiligen Strings. Wenn Sie das oben genannte ausführen, erhalten Sie.

%Vor%

Sie sehen, dass es den Anfang der mehrzeiligen Zeichenfolge nicht meldet, nur das Ende. Es gibt keine gute Lösung dafür mit den integrierten Python-Tools.

Eine weitere Option ist, dass Sie mein ' python4ply -Modul verwenden können. Dies ist eine Grammatikdefinition für Python für PLY , das ein Parser-Generator ist. Hier ist, wie Sie es verwenden könnten:

%Vor%

Die Ausgabe von diesem ist

%Vor%

Spalteninformationen werden nicht unterstützt. (Es gibt einige größtenteils vollständig auskommentierten Code, um das zu unterstützen, aber es ist nicht vollständig getestet.) Andererseits, ich sehe, dass Sie es nicht brauchen. Es bedeutet auch, mit Pythons "Compiler" -Modul zu arbeiten, das unhandlicher ist als das AST-Modul.

Trotzdem, mit 30 bis 40 Zeilen Code sollten Sie genau das haben, was Sie wollen.

    
Andrew Dalke 25.02.2009 12:54
quelle
6

Pythons enthaltenes tokenize -Modul wird auch den Trick machen.

%Vor%     
Lenny 02.03.2009 19:58
quelle
3

Wenn Sie dies in Python machen können, würde ich vorschlagen, dass Sie sich zuerst die ast (Abstract Syntax Tree) Modul, und von dort aus gehen.

    
unwind 25.02.2009 10:54
quelle
2

Fragen Sie nach den I18N-Dienstprogrammen in Python?

Ссылка

Es gibt ein Dienstprogramm namens po-utils (früher xpot), das dabei helfen kann.

Ссылка

    
S.Lott 25.02.2009 11:41
quelle
2

Sie können auch überlegen, Ihren Code mit zu analysieren Segmente

Ich kenne die andere Lösung nicht, aber es ist sicher sehr einfach zu bedienen.

    
fulmicoton 25.02.2009 12:24
quelle
0

Gettext könnte Ihnen helfen. Geben Sie Ihre Strings in _( ... ) structures:

ein %Vor%

Führen Sie dann die Shell-Eingabeaufforderung aus:

%Vor%

Sie erhalten eine Datei messages.pot mit den benötigten Informationen:

%Vor%     
nosklo 25.02.2009 12:00
quelle

Tags und Links