Mam duży plik CSV , który muszę usunąć pierwszą kolumnę danych. Nie mogę go otworzyć w programie Excel, ponieważ program Excel konwertuje niektóre wartości w kolumnach na liczby naukowe.
Używam Notepad ++ i próbuję napisać pierwszą kolumnę z pliku EXE,
1,Value1,value2,value3,value4,value5
3445,Value1,value2,value3,value4,value5
12345,Value1,value2,value3,value4,value5
1234,Value1,value2,value3,value4,value5
11,Value1,value2,value3,value4,value5
wygladać jak
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
źródło
^[^,]+,
i zastąpić pustym?Naciśnij Ctrl+ Hi wykonaj następujące zastąpienie:
Teraz naciśnij Alt+, Aaby zastąpić wszystkie wystąpienia.
Jak to działa
Wyrażenie regularne
.*?,(.*)
dopasowuje cały wiersz:.*?,
dopasowuje wszystko przed pierwszym przecinkiem, łącznie z samym przecinkiem..*
oznacza dowolną liczbę wystąpień dowolnego znaku, a znak zapytania powoduje, że kwantyfikator jest leniwy , tzn. dopasowuje jak najmniej znaków.(.*)
dopasowuje wszystko po pierwszym przecinku.Zamknięcie
.*
w nawiasach przekształca go w wzór pomocniczy, aby można było uzyskać dostęp do masztu w polu zamiany.\1
reprezentuje pierwsze przesłanie (dopasowanie dla(.*)
).W rezultacie Notepad ++ zamienia wiersz na wszystko, co następuje po pierwszym przecinku.
źródło
^[^,]+,
globalnie zastąpiony pustym ciągiem nie będzie działał w Notepad ++. (+1)W systemie Windows możesz to zrobić w następujący sposób.
Zakładałem, że masz tylko 6 kolumn. Jeśli masz dużo więcej kolumn, spróbuj eksperymentować z * w polu tokenów. Pomysł pochodzi z systemu Windows na polecenie
źródło
for /F "tokens=1* delims=," %i in (Input.csv) do @echo %j >> output.csv
Zakładając, że masz system linuksowy lub środowisko w stylu uniksowym (lubię gow , lub możesz oderwać narzędzia od unixutils ) Wierzę, że uruchomienie pliku
cut -d , -f2-6
powinno załatwić sprawę - powinno, jeśli przywołam poprawnie, zrobi lewę --d
ustawia deliminator if2-6
drukuje znaki od drugiej do szóstej.cat input.csv | cut -d , -f2-6 > output.csv
zrobiłby lewę biorąc plik wejściowy i wykopując plik wyjściowy. Nie używa notatnika, ale jest szybki i bardzo prosty.źródło
Powinieneś być w stanie załadować CSV do programu Excel i traktować liczby jako tekst (zapobiegając konwersji na liczby naukowe).
źródło
Notepad ++ ma wbudowaną edycję kolumn i polecenie Line Up by (,) (wtyczka TextFX), dając graficzne rozwiązanie typu „wskaż i kliknij”, które prawdopodobnie będzie po raz pierwszy właściwe. Pozwala to uniknąć konieczności używania wyrażeń regularnych lub programowania powłoki, które zwykle wymagają debugowania, dopóki nie zrobią dokładnie tego, co chcesz i nic więcej.
Punkt początkowy : plik CSV z kolumnami źle wyrównany, więc nie jest łatwy do edycji według kolumn ...
Procedura:
Wybierz interesujące Cię rzędy - być może cały plik.
Użyj polecenia menu TextFX> Edycja TextFX> Ustaw wiele linii przecinkiem (,) To wyrównuje wszystkie wiersze według kolumn i ułatwia edycję kolumn.
Wejdź do trybu kolumny w kolumnie po pierwszym przecinku (,) W przypadku niewielkiej liczby wierszy użyj poleceń klawiaturowych: Alt + Shift + Strzałka w dół.
Jeśli chcesz pracować na wielu wierszach (duży plik), użyj Alt + mysz i kliknij żądaną kolumnę pierwszego wiersza, a następnie przejdź do ostatniego wiersza pliku i Alt + Shift + kliknij tę samą pozycję kolumny. Aktywuje to tryb kolumnowy w pliku CAŁOŚĆ - za wszystkimi przecinkami powinna być widoczna pionowa linia.
Usuń w trybie kolumny usuwa całą kolumnę znaków. Możesz więc usunąć wszystko przed pierwszym przecinkiem we wszystkich wierszach jednocześnie, aby uzyskać:
Gotowy!
Uwaga na temat tego rozwiązania w porównaniu z innymi sugerowanymi dotychczas:
Edycja w trybie kolumnowym jest dość wydajna i, w połączeniu z opcjami wtyczki TextFX, ma zastosowanie do różnych sytuacji w szybki i szybki sposób.
Na przykład, jeśli zdecydowałeś się szybko usunąć 2. kolumnę lub N-tą kolumnę, to podejście działa prawie bez modyfikacji.
Z drugiej strony wyrażenia regularne, skrypty powłoki osiągną cel, tak, ale w skomplikowanych problemach poświęcisz więcej czasu na „usuwanie błędów” ze składni.
Wszechstronna wbudowana funkcjonalność Notepad ++ jest jedną z jego głównych zalet: zyskujesz całkiem sporo mocy bez konieczności uciekania się do „programowania”.
źródło
Jeśli znasz wtyczkę konsoli Python dla Notepad ++, mogę doradzić Ci inną metodę. Musisz dodać tekst do dokumentu Notepad ++ i wykonać następny skrypt w konsoli:
Ten skrypt dodał tekst wynikowy do bieżącego dokumentu Notepad ++.
źródło
Uruchom
vim
(w trybie poleceń, jeśli nie, naciśnij Escape).Wpisz następujące polecenie, aby zmapować akcję usuwania pierwszej kolumny do
q
klucza:Co znaczy:
0
- przejdź na początek liniidf,
- d elete wszystko do , znak (w tym przecinek),j
- idź w dół o jedną linię0
- przejdź na początek liniiNastępnie zastosuj tę akcję do wszystkich linii:
Co oznacza, uruchom akcję przypisaną do klucza
q
od linii od początku (0) do końca ($).źródło
:%s/^[^,]\+,//g
?