CSV bearbeiten

Gast #6926108
Lesenswert?
• ▲
▼
Hi

Ich suche nach einer Lösung mit der ich folgenges hinbekomme:
In einem CSV, mit Doppelpunkt getrennt, steht zumeist in der ersten 
Spalte ein Betrag inkl. "€" Zeichen.
Aufgabe: Sollte davor ein anderer Text stehen, soll dieser, wieder mit 
Doppelpunkt getrennt, ans Ende der Zeile verschoben werden (oder 
Notfalls gelöscht werden). Ziel ist auf jeden Fall, dass in der ersten 
Spalte der Euro Betrag steht.

Beispiel:

abc 123€:Austria
34€ bcd:Auto
Hund:dfg 66€:Klaus
cf 4321€ qwe:Radio:PC

das Ergebnis sollte danach sein (Zeile 3):

abc 123€:Austria
34€ bcd:Auto
dfg 66€:Klaus:Hund
cf 4321€ qwe:Radio:PC


hat jemand einen Vorschlag?
Gast #6926171
Lesenswert?
• ▲
▼
So gut wie jede Programmiersprache kann CSV einlesen und dir ein Array 
oder ähnliches bereitstellen. Dann prüfst du alle Einträge entsprechend 
und schreibst es ins CSV zurück.

Verstanden? Fertigen Code gibts hier nicht.
#6926243
Lesenswert?
• ▲
▼
Servus Freddy,

ich würds mit Excel machen, wobei ich die gesamte Aufgabenstellung nicht 
vollständig verstanden habe bzw. das gewünschte Endergebnis.

Was sind die Spalten, wie lautet der Trenner der Spalte, Leerzeichen, 
Tab, Doppelpunkt?

Auch unklar:
Aus
Hund:dfg 66€:Klaus
soll
dfg 66€:Klaus:Hund
werden.

Soll dann aus
abc 123€:Austria
auch
123€:Austria:abc
werden?
Oder ist hier der : nach dem Hund ausschlaggebend, dass der Text nach 
hintern verschoben werden soll? Davon gehe ich meinem Ansatz jetzt mal 
aus, da du auf Zeile 3 extra hinweist.

Hier bewusst ohne VBA-Makros
Lies das erstmal ein, das Spalte A in jeder Zeile immer der gesamte 
Ausdruck steht.

Siehe Bild:
Erstmal den : suchen.      =FINDEN(":";A2)
Das € suchen:              =FINDEN("€";A2)
Feststellen ob, : vor €    =WENN(C2>B2;"Ja";"Nein")
Text teilen                =TEIL(A2;1;B2-1)
Text teilen                =TEIL(A2;B2+1;100)
Wieder zusammenbauen       =WENN(D2="Ja";VERKETTEN(F2;":";E2);"")

Gruß
Andi
Angehängte Dateien:
Gast #6926252
Lesenswert?
• ▲
▼
WIRO schrieb:
> Darf mehr als nur ein Text mit : getrennt davor stehen?
>   Hund:Katze:Maus:dfg 66€:Klaus
>
> Gruß
> WIRO

ja, kann vorkommen. alles sollte dann entweder nach hinten verschoben 
oder gelöscht werden:

dfg 66€:Klaus:Hund:Katze:Maus

oder eben nur

dfg 66€:Klaus


Schlaumaier schrieb:
> Das bekommst du sogar in Excel hin. ;) Sollte sogar ohne Makro gehen.

nein, das csv hat etwa 5 Millionen Zeilen
Gast #6926263
Lesenswert?
• ▲
▼
A. H. schrieb:
> ich würds mit Excel machen, wobei ich die gesamte Aufgabenstellung nicht
> vollständig verstanden habe bzw. das gewünschte Endergebnis.

Ich auch nicht, weil sein Beispiel nicht zum Fragetext passt:
FranticFreddy schrieb:
> Ziel ist auf jeden Fall, dass in der ersten Spalte der Euro Betrag steht.

Ich bin nicht der TO und habe das Problem auch nicht, finde Deinen 
Kommentar aber interessant. Du nutzt scheinbar "Finden()", magst Du Dein 
Beispiel mal als .xls hier reinstellen?
Moderator #6926323
Lesenswert?
• ▲
▼
Sid Greybeard schrieb:
> man sed

Guter Vorschlag.

Das Kommando
1
sed 's/\(^[^€]*\):\(.*\)/\2:\1/'

konvertiert die Eingabe
1
abc 123€:Austria
2
34€ bcd:Auto
3
Hund:dfg 66€:Klaus
4
cf 4321€ qwe:Radio:PC
5
Hund:Katze:Maus:dfg 66€:Klaus

wie gewünscht in
1
abc 123€:Austria
2
34€ bcd:Auto
3
dfg 66€:Klaus:Hund
4
cf 4321€ qwe:Radio:PC
5
dfg 66€:Klaus:Hund:Katze:Maus

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.