0 Daumen
269 Aufrufe

Ich filte die Zeilen einer LaTex-Datei wie folgt.

with open("fr_13_regions.tex",'r', ) as f:
  targets = [line for line in f if line.startswith(("\\section", "\\subsection", "\\subsubsection", "\\begin", "\\end", "\\item"))]

Ich möchte das Ergebnis in einer neuen LaTex-Datei speichern. Ich habe das versucht:

>>> with open("fr_13_regions.tex", 'r', encoding = "utf-8") as f:
...   targets = [line for line in f if line.startswith(("\\section", "\\subsection", "\\subsubsection", "\\begin", "\\end", "\\item"))]
...   w=open("guru99.tex", "a+")
...   w.write(str(targets))
...
13815

Aber es ist nur das Array schreiben. Es erstellt nicht wirklich eine neue Tex-Datei.

Hier ist ein Beispiel für die Datei fr_13_regions.tex :

    \documentclass{article}
 
  \usepackage[utf8]{inputenc}
  \usepackage[T1]{fontenc}
  \usepackage{microtype}
 
  \usepackage{newspaper}
 
 
  \date{\today}
  \currentvolume{1}
  \currentissue{1}
 
  \SetPaperName{%
    \fontencoding{T1}\fontfamily{phv}\fontsize{26}{0}\bfseries
    La France des 13 régions%
  }
 
  \SetPaperLocation{}
  \SetPaperSlogan{Sous la direction de L. Carroué}
  \SetPaperPrice{antoine.compagnie@gmail.com}
 
 
  \usepackage{lipsum}
 
  \begin{document}
  \maketitle
 
  \begin{multicols}{3}
 
  \headline{Ile-de-France}
  \section{La Région-capitale : une place et un rôle exceptionnels}
  \subsection{Une longue construction historique}
  VOila une belle histoire à raconter !
  \end{document}

Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Schreiben des Ergebnisses in eine neue LaTeX-Datei

Um die Zeilen Ihrer LaTeX-Datei zu filtern und das Ergebnis korrekt in einer neuen Datei zu speichern, müssen Sie beim Schreiben in die Datei einige Änderungen vornehmen. Anstatt das Array direkt in die Datei zu schreiben, was zu einer Darstellung des Arrays als String führt, sollten Sie jede gefilterte Zeile einzeln schreiben. Außerdem sollten Sie sicherstellen, dass Sie die Datei nach dem Schreiben schließen oder das Kontextmanager (with-Statement) verwenden, um die Datei automatisch zu schließen.

Hier ein verbessertes Beispiel, das zeigt, wie Sie die gefilterten Zeilen in eine neue LaTeX-Datei schreiben:

python
# Öffnen der ursprünglichen LaTeX-Datei zum Lesen
with open("fr_13_regions.tex", 'r', encoding="utf-8") as f:
    # Filtern der gewünschten Zeilen
    targets = [line for line in f if line.startswith(("\\section", "\\subsection", "\\subsubsection", "\\begin", "\\end", "\\item"))]

# Öffnen der neuen Datei zum Schreiben (w für Schreiben, + für Erstellen, falls nicht vorhanden)
with open("guru99.tex", "w", encoding="utf-8") as w:
    # Schreiben jeder gefilterten Zeile in die neue Datei
    for line in targets:
        w.write(line)  # Schreiben der Zeile


Dieser Code durchläuft jede Zeile der ursprünglichen Datei und filtert diese basierend auf dem Start der Zeile mit einem der angegebenen Schlüsselwörter. Anschließend wird jede dieser gefilterten Zeilen einzeln in die neue Datei geschrieben, wobei jede Zeile direkt als Text (und nicht als Teil eines Arrays) gespeichert wird. Das Ergebnis ist eine neue LaTeX-Datei, die nur die gefilterten Zeilen enthält.

Beachten Sie, dass "w" als Modus zum Öffnen der neuen Datei verwendet wird, was bedeutet, dass die Datei zum Schreiben geöffnet wird und ihr Inhalt überschrieben wird, falls sie bereits existiert. Wenn Sie möchten, dass die neuen Daten an das Ende einer bereits vorhandenen Datei angehängt werden, könnten Sie stattdessen den Modus "a" verwenden. In diesem Fall wurde jedoch "w" benutzt, um sicherzustellen, dass die Datei nur die neuen, gefilterten Zeilen enthält.
Avatar von

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

0 Daumen
1 Antwort
0 Daumen
1 Antwort
0 Daumen
2 Antworten
0 Daumen
1 Antwort

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community