[Python-de] Logik-Problem mit Convert unlinear -> linear

Dinu Gherman gherman at darwin.in-berlin.de
Do Apr 5 08:50:29 UTC 2007


js at ibcon.net:

> Hallo Leute+
>
> Folgendes: Ich habe ein unlinear aufgebautes Textfile erhalten und
> sollte dieses in ein unlineares konvertieren.
>
> Dieses sieht u.a. so aus:
>
> \1TL:A1       TOU:   1#OBJETS:656  CPT: 656#DATE CHARGE:30.
> 6.06#PERIODE:  6/06
> \2DATE RELEVE:--.--.--#RELEVEUR: --------- #A1/06.06            #
> \32610 St-Imier     00#                    #Temple 19           #
> \4Municipalit?        #  1011905           #                    #
> \8Localisation:       #s.-sol              #                    #
> \5O   -   005439968 00#      76 EA --------#                    #
> \6          !0000022200000076#                #          #
> \4Amstutz Roland      # 11011921           #2 ?me               #
> \8Localisation:       #1 er                #                    #
> \5E ED-   059101797 00#   14534 HA --------#   25615 BA --------#
> \6          !0001490900014534#0002644800025615#          #
> \32610 St-Imier     00#                    #Temple 15           #
> \4Municipalit?        #500011544           #                    #
> \5G B -   000869931 00#   18789 GA --------#                    #
> \6          !0001920400018789#                #          #
> \4Municipalit?        #500011545           #                    #
> \5O   -   099474627 00#     204 EA --------#                    #
> \6          !0000022900000204#                #          #
>
> Positiv: Ich hab "Zeilennummern" (die ersten 2 kann ich ignorieren),
> es scheint auch alles feste Breite zu sein und ich weiss von wo bis wo
> meine Datensätze gehen.
>
> Das Ergebnis sollte ein Textfile mit fester Breite sein, die
> Definition dazu habe ich.
>
> Mein Problem: Die Reihenfolge der Felder im Ergebnis ist anders als im
> Ursprungs-File.
>
> Meine Frage daher: Wie erstelle ich Zeilen in fester Breite und
> sortiere die Felder davor noch?
>
> lg, Jan

So ganz klar wird mir nicht, was Du genau willst, aber vielleicht
hilft das hier unten schon einmal weiter. ;-)

Gruss,

Dinu



[GCC 3.3 20030304 (Apple Computer, Inc. build 1640)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
 >>>
 >>> s = """\1TL:A1       TOU:   1#OBJETS:656  CPT: 656#DATE CHARGE:30.
6.06#PERIODE:  6/06
\2DATE RELEVE:--.-... ... -.--#RELEVEUR: --------- #A1/06.06            
#
\3... 2610 St-Imier     00#                    #Temple 19           #
\4Municipalit?        #  1011905    ...        #                    #
\8Localisation:     ...   #s.-sol              #                    #
\5O ...   -   005439968 00#      76 EA --------#                    #
\6          !0000022200000076#        ...         #          #
\4Amstutz Roland      # 11011... 921           #2 ?me               #
\8Localisation:       #1 er                #                    #
\5E ED-   059101797 00#   14534 HA --------#   ... ... 25615 BA 
--------#
\6          !0001490900014534#0... 002644800025615#          #
\32610 St-Imier     00... #                    #Temple 15           #
\4Municipalit?        #500011544           #            ...         #
\5G B -   000869931 00#   18789 GA --------#                    #
\6          !0001920400018789#                #          #
\4Municipalit?        #500011545           #                    #... ...
\5O   -   099474627 00#     204 EA --------#     ...                #
\6          !0000022900000204#   ... ...              #          #"""
 >>>
 >>> for line in sorted(s.split("\n")): print line
...
TL:A1       TOU:   1#OBJETS:656  CPT: 656#DATE CHARGE:30.
DATE RELEVE:--.--.--#RELEVEUR: --------- #A1/06.06            #
Amstutz Roland      # 11011921           #2 ?me               #
Municipalit?        #  1011905           #                    #
Municipalit?        #500011544           #                    #
Municipalit?        #500011545           #                    #
E ED-   059101797 00#   14534 HA --------#   25615 BA --------#
G B -   000869931 00#   18789 GA --------#                    #
O   -   005439968 00#      76 EA --------#                    #
O   -   099474627 00#     204 EA --------#                    #
           !0000022200000076#                #          #
           !0000022900000204#                #          #
           !0001490900014534#0002644800025615#          #
           !0001920400018789#                #          #
6.06#PERIODE:  6/06
\8Localisation:       #1 er                #                    #
\8Localisation:       #s.-sol              #                    #
?10 St-Imier     00#                    #Temple 15           #
?10 St-Imier     00#                    #Temple 19           #
 >>>