Python beste Möglichkeit für: Inhaltsveränderung einer txt?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Rene-AC
User
Beiträge: 5
Registriert: Montag 1. Juni 2015, 09:25

Hey,

ich suche nach einer Möglichkeit den Inhalt einer Txt Datei mit einem Wörterbuch umzubennen.
Ich habe in Excel via VBA ein Array erstellt, in dem ich auf (j,0) den Klarnamen habe und auf (j,j) den Kurznamen.

Am Ende eines anderen Skript kommt dann soetwas raus:

Code: Alles auswählen

A1X                     C   5H  10O   3    0G   300.000  5000.000 1295.000    31
-1.94019595E+02 2.38237286E-01-5.03234200E-06-3.27313936E-08 4.78976148E-12    2
 6.89923525E+04 1.20814031E+03 3.09088130E+00 5.18381022E-02-1.43097470E-05    3
 3.02227848E-09-1.54089161E-12-4.37787877E+04 2.33288270E+01                   4
A2X                     C   5H   9O   3    0G   300.000  5000.000 1841.000    31
-4.14189285E+02 3.60374438E-01 6.52743584E-06-4.94390208E-08 6.91378779E-12    2
 2.86331521E+05 2.63858416E+03-5.17234864E+00 9.51963356E-02-9.88665231E-05    3
 6.75202068E-08-1.86306305E-11-2.59210734E+04 6.04627743E+01                   4
A3X                     C   5H  10O   3    0G   300.000  5000.000 1297.000    31
-1.23763055E+02 1.63986771E-01 2.98562226E-06-2.55046894E-08 3.62236726E-12    2
 2.93114528E+04 7.89363052E+02 4.43367849E+00 4.79540182E-02-9.17077178E-06    3
-9.25294839E-11-8.62803286E-13-4.52086311E+04 1.58840433E+01                   4
Die Kürzel "A#X" sollen dann mittels Wörterbuch zu Ihren Klarnamen übersetzt werden:

Code: Alles auswählen

C5KET2-OOH5        THERMC   5H  10O   3    0G   300.000  5000.000 1365.000    51
 2.21132680E+01 2.39499828E-02-8.42398895E-06 1.33264262E-09-7.83377898E-14    2
-5.14312375E+04-8.47106704E+01 4.43523345E+00 5.37761851E-02-2.15714190E-05    3
 7.27557627E-11 1.26572759E-12-4.41215993E+04 1.43425831E+01                   4
C5KET2-OO5 5/ 7/15 THERMC   5H   9O   3    0G   300.000  5000.000 1676.000    51
 1.84215424E+01 2.60554574E-02-9.58370177E-06 1.56685961E-09-9.43494733E-14    2
-3.25620820E+04-6.24046472E+01 5.56000206E+00 4.72721380E-02-1.72039096E-05    3
-7.19287281E-10 1.10589545E-12-2.75113025E+04 9.44490827E+00                   4
C5KET2-OOH4        THERMC   5H  10O   3    0G   300.000  5000.000 1370.000    51
 2.25580294E+01 2.36003646E-02-8.30929086E-06 1.31532705E-09-7.73524814E-14    2
-5.34261642E+04-8.82154026E+01 4.31859895E+00 5.68761508E-02-2.73639771E-05    3
 3.97704280E-09 3.68562543E-13-4.61082526E+04 1.31400154E+01                   4
Wichtig dabei ist, das die Formatierung NICHT verändert wird, ich also beim Einfügen die Zeichen überschreibe statt sie zu verschieben.

Ich bin ein relativer Python Neuling, aber auch meine VBA Kenntnisse sind eher rudimentär.

Meine Frage an euch ist daher:
Lässt sich soetwas mit Python relativ einfach gestallten? Oder könnte man auch mit VBA (dann hätte ich alles in einem ;) ) sich weiter helfen?

Gruß,

und vielen Dank vorab =)
Sirius3
User
Beiträge: 17746
Registriert: Sonntag 21. Oktober 2012, 17:20

@Rene-AC: sind Deine Dateien absichtlich so kaputt? Welches Programm erwartet denn solch einen Input? Warum sieht Dein Array so seltsam aus und warum benutzt Du dafür nicht einfach eine Tabelle mit Spalte A und B?
Rene-AC
User
Beiträge: 5
Registriert: Montag 1. Juni 2015, 09:25

Ich hoffe das dir der Code genauso dargestellt wird wie mir, dann: Ja das Programm braucht genau dieses Format als Input ;)

Das Array wird selbst erzeugt:

Ich gebe erst Haufenweise Klarnamen ein (Reaktionen).
Dann liest ein VBA Skript alle Namen ein, und gibt jedem Langnamen eine Kurzvorm im Array (Also Klarname wird auf (1,0) eingelesen und kurz name auf (1,1) generiert..., dann wird natürlich noch überprüft ob es den Klarnamen schon gibt und gegebenenfalls der selbe Kurzname vergeben)

Das Ganze wird dann auf dem Arbeitsblatt "Wörterbuch" auch wieder in Spalte A und B geschrieben.
Da muss der Anwender dann weitere eingaben machen. Aus diesen EIngaben wird wiederum per VBA ein neues Arbeitsblatt erstellt und als txt. Exportiert. Diese .txt wird dann von einem Programm eingelesen, und dieses Programm spuckt mir obige Datei aus.

Und da muss ich dann wieder aus dem Kurznamen, den Langnamen machen...
Sirius3
User
Beiträge: 17746
Registriert: Sonntag 21. Oktober 2012, 17:20

@Rene-AC: mit VBA hört sich das jetzt schon wie ein großer Krampf an, aber Python kann das.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Es gibt Module speziell um mit Excel zu arbeiten. Müsstest du mal bei PyPy schauen. Möglicherweise kann man sich dann den Import und Export sparen und möglicherweise kann man dann alles über dieses Modul (und ohne VBA) abwickeln. Nur am Rande: Ich weiß nur, dass es das Modul geben muss (youtube-Vide), habe damit aber nicht gearbeitet.
Antworten