2016-08-31 10 views
1
a,b,c,d 
aaa,2.15,100.15,- 
bbb,3.16,215.16,- 
ccc,4.10,365.18,- 

Ich möchteSo entfernen Sie Spalten CSV Notepad ++/RegEx?

2.15, 
3.16, 
4.10, 

und

,- 
,- 
,- 

I Spalten entfernen möchten entfernen b + d

img1

img2


, [\ w]. *, [\ W].

+0

Ich bin nicht sicher, ob Sie das mit einer Regex tun können, ich denke, es ersetzt das ganze Spiel. Wenn alle Spalten dieselbe Breite haben, können Sie sie mit Alt + Maus auswählen. Wenn nicht, würde ich es mit Excel machen. – Andrew

+0

Bitte formatieren Sie den Post so, dass er lesbar ist. Verwenden Sie den verfügbaren Abschlag. Veröffentlichen Sie ein Beispiel dafür, wie die CSV-Datei vorher und nachher aussehen soll. – Keozon

+1

Sie können versuchen [wie folgt] (https://regex101.com/r/oM8jL3/1). –

Antwort

1

Erfassen Sie einfach alles außer den zwei Spalten.
(Edit: hinzugefügt \r\n so überspannen keine Linien)

X = vor Col 1: = b-1
Y = vor col 2: = d-1 - X - 1

Ersetzen
(?m)^((?:[^,\r\n]*,){X})[^,\r\n]*,((?:[^,\r\n]*,){Y})[^,\r\n]*(.*)

: finden
$1$2$3

Beispiel -

X = 2-1 (Col 2) = 1
Y = 4-1 - X - 1 (Col 4) = 1

Regex: (?m)^((?:[^,\r\n]*,){1})[^,\r\n]*,((?:[^,\r\n]*,){1})[^,\r\n]*(.*)


oder, falls dies

(?m)^([^,\r\n]*,)[^,\r\n]*,([^,\r\n]*).*

, ist ein 1-off Sache ersetzen verwenden $1$2

die gerade Spalte eliminiert 2 und 4

+0

Sind Sie sicher, dass das funktioniert? Ich konnte es nicht in regex101 oder Notepad ++ arbeiten lassen. Es entspricht nichts. – Andrew

+0

@sln ** Danke ** Ich schätze deine Hilfe sehr ^^ – moon90

+0

Oh, ich schreibe nur (meistens) Sachen, die vom Testen funktionieren. Was speziell nicht funktioniert @Andrew, poste einen Link zu etwas, wenn du kannst. Ich benutze meinen eigenen Offline-Tester/Analyzer. – sln

0

Suche nur für diese:

(\w+),\d+\.?\d*,(\d+\.?\d*),- 

Und ersetzen mit diesem:

$1,$2 

Endergebnis:

a,b,c,d 
aaa,100.15 
bbb,215.16 
ccc,365.18 

Es unterstützt Zahlen mit oder ohne Dezimalzahlen, beliebig viele Ziffern. Sie müssen es möglicherweise ändern, wenn die erste Spalte Sonderzeichen enthält.

+0

Das bedeutet, du hast mir geholfen, haha. Sie sollten eine Antwort als akzeptiert markieren, wenn sie Ihnen geholfen hat. Wenn Sie die Daten im erwarteten Format validieren möchten, verwenden Sie diese Regex. Wenn Ihnen nur die Anzahl der Spalten wichtig ist, können Sie LukStorms verwenden. – Andrew

+0

Es tut mir leid: Danke, dass du mir geholfen hast :) – moon90

+0

Aber hast du die Option von snn benutzt und es hat funktioniert? Bei deinen Eingabewerten hat es nicht funktioniert. – Andrew

1

Notepad ++ Lösung:

  • Suchen nach: ^(.*?),.*?,(.*?),.*$
  • Ersetzen durch: $1,$2
  • Suchmodus: Regulärer Ausdruck (ohne . matches newline)

Die Regex wird die erste Stelle setzen und 3. Spalte in Capture-Gruppen.
Die im Ersatz verwendet werden.

+0

** Vielen Dank ** sehr für Ihre Hilfe ^^ – moon90