LaTEX und CSV

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
nyami
User
Beiträge: 3
Registriert: Freitag 1. Februar 2013, 18:59

Als Newbie möchte ich mit phython folgendes machen:
Das script soll in einem LaTEX Dokument bestimmte Textmarken suchen, diese kopieren und in einer CSV-Datei nachschauen, ob vorhanden.
Wenn ja, Text in der dahinter liegenden Spalte kopieren und an Stelle eines Platzhalters in das .tex Dokument einfügen.

Beispiel:

1. .tex-Datei

Code: Alles auswählen

....
\begin{tabular}{l l  r}
{\LARGE \bf Netzüberwachung} & & 3-Phasen {\color{red}ohne} Hilfsspannung\\[3ex]
z.B für Pumpen oder Lüfter 400V AC 50/60 Hz & &\\[5ex]
\hline \\
& Type Finder & Artikelnummer\\[3ex]
1W / 6A & & \\[1ex]
\raisebox{-1\height}{\includegraphics[height=100px]{produktbilder/7061} \includegraphics[height=100px]{produktzeichnungen/7231-wiring}} & %70.61.8.400.000% & %kdartnum% \\[1ex]
\end{tabular}
...
2. .csv-Datei

Code: Alles auswählen

....
70.61.8.400.000;47110000
....
Das Script soll also %kdartnum% gegen 4711000 tauschen, wenn er 70.61.8.400.000 findet und die 2 Spalte nicht leer ist.

Bitte nur um Info mit Stichworten. Ich versuche es dann selber.

Danke vorab

Sven
Zuletzt geändert von nyami am Samstag 2. Februar 2013, 17:57, insgesamt 1-mal geändert.
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

1. Wenn der Umfang der Daten in der CSV-Datei in den Speicher passt: mit dem csv-Modul die Datei öffnen und ein Dicitonary füllen. Schlüssel ist der Platzhalter, Wert entsprechend der Wert.

2. Tex-Datei einlesen (wenn sie in den Speicher passt)

3. Regular Expression auf den eingelesenen Inhalt der tex-Datei loslassen und entsprechende entsprechende Ersetzungen vornehmen.
Alternativ: auf den Inhalt ein .replace() loslassen, dann brauchst du keine RegEx.

4. Veränderten Inhalt in eine Datei speichern

5. Ausgangsdatei löschen

6. Neuer Datei alten Dateinamen geben.

Das mit dem Speicher sollte kein Problem sein. Es sei denn das Dokument oder die CSV-Datei hat einen riesigen Umfang oder die Umgebung ist außergewöhnlich. So ein NSLU2 zum Beispiel ;)
nyami
User
Beiträge: 3
Registriert: Freitag 1. Februar 2013, 18:59

Danke,

bin schon fündig geworden und werde das hier probieren:

http://openbook.galileocomputing.de/pyt ... 09_003.htm

Gruß
Sven
BlackJack

@nyami: Wenn es schon ein Modul für CSV-Dateien gibt, sollte man das Rad nicht unbedingt neu erfinden und das nachprogrammieren.

Was im Openbook nicht erwähnt wird, hier aber sehr interessant wäre, ist die ``with``-Anweisung. Das Buch ist halt schon etwas älter.
nyami
User
Beiträge: 3
Registriert: Freitag 1. Februar 2013, 18:59

BlackJack

@nyami: Wieder ein Beispiel warum das Buch nicht gut ist: ``reader = csv.reader(open("namen.csv", "rb"))`` — wenn man das so macht, kann man die Datei nicht wieder schliessen und das kann zu Problemen führen. Dateien sollte man immer explizit schliessen oder die ``with``-Anweisung verwenden.

Spätestens wenn Du zu objektorientierter Programmierung kommst, solltest Du *nicht* das OpenBook verwenden. Das entsprechende Kapitel ist kein Python sondern C++ oder Java in Python-Syntax.
Antworten