Nieco więcej niż odwrotność tego .
W: multi-line DSV danych i pojedynczym znakiem ogranicznika. DSV można traktować jako plik, nazwę pliku, ciąg oddzielony od linii, listę ciągów itp. Wszystkie rekordy mają tę samą liczbę pól i żadne pole nie jest puste. Dane nie zawierają znaku ogranicznika i nie ma mechanizmu cytowania ani zmiany znaczenia.
Out: struktura danych reprezentująca DSV, np. Lista list ciągów lub macierz ciągów.
Przykłady
["here is,some,sample","data,delimited,by commas"]
i ","
:
[["here is","some","sample"],["data","delimited","by commas"]]
["hello;\"","\";world","\";\""]
i ";"
:
[["hello","\""],["\"","world"],["\"","\""]]
(ucieka, ponieważ w tym przykładzie użyto JSON)
["to be or not","that is the question"]
i " "
:
[["to","be","or","not"],["that","is","the","question"]]
",for,example,this,string,"
Odpowiedzi:
Galaretka ,
32 bajtyDennis zwraca uwagę, że chociaż wydaje się, że rozwiązanie 2-bajtowe nie działa, to samo łącze diadadowe działa, i że tak naprawdę analizowane są argumenty wiersza poleceń, które sprawiają, że tak wygląda.
Wypróbuj online! - stopka wywołuje funkcję z wyraźnie ustawionym lewym i prawym formatem i formatuje jako siatkę *.
Dokładnie jak poniżej, z wyjątkiem
ṣ
podziałów w przypadku wystąpienia właściwego argumentu, a nie na listy podrzędne równe prawidłowemu argumentowi.Do 3 byter - stopce wyświetla wynik w postaci siatki. *
Dyadyczny link (funkcja), który pobiera listę DSV po lewej stronie i separator po prawej stronie.
W jaki sposób?
* Jako pełny program wynik niejawny po prostu „zmiażdży” wszystkie znaki, więc stopka łącza TIO wywołuje łącze jako diadę i
G
ładnie formatuje wynik.źródło
Japt , 3 bajty
Przetestuj online! (Używa
-Q
flagi do wydrukowania wydruku)źródło
PowerShell,
2522/23 bajtówDwie opcje, jedna po prostu wywołuje podział pierwszego argumentu, używając drugiego argumentu jako wartości delim.
Jeden bajt dłużej, wbudowany w parsowanie csvs, przyjmuje nazwę pliku jako pierwszy argument, a separator jako drugi.
-2, ponieważ nie wymaga parametru
-Delimiter
(-D
) i domyślnie go przyjmuje.Niestety, PowerShell nie może przekazać tablicy dwóch parametrów, ponieważ zakłada, że oba są plikami, i uruchomi komendę dwa razy, żadna inna metoda wprowadzania dwóch zmiennych nie jest krótsza niż ta, o ile widzę, więc jest to prawdopodobne najkrótsza możliwa odpowiedź.
ipcsv
jest aliasem dlaImport-Csv
, przyjmuje nazwę pliku jako pierwsze nienazwane wejście, a znak separatora jako drugie zachowanie domyślnie.Uruchom na przykładzie ze zwrotów strony wiki
źródło
Python, 33 bajty
źródło
Haskell, 29 bajtów
Przykład użycia:
(map.splitOn) " " ["to be or not","that is the question"]
->[["to","be","or","not"],["that","is","the","question"]]
.źródło
05AB1E , 5 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
JavaScript, 26 bajtów
Odbiera dane wejściowe w formacie (tablica ciągów) (separator)
Wypróbuj online!
źródło
Mathematica, 11 bajtów
Wbudowana funkcja pobierająca dwa argumenty, listę ciągów znaków i znak (a nawet bardziej ogólny). Przykładowe użycie:
daje
źródło
MATLAB / Octave,
4125 bajtówTworzy anonimową funkcję o nazwie,
ans
która akceptuje pierwsze dane wejściowe jako tablicę komórek ciągów, a drugie dane wejściowe jako ciąg znaków.Wypróbuj online
źródło
Cheddar, 19 bajtów
niezła prezentacja umiejętności zapętlania. Dodałem nową kompozycję i np. bloki, co pozwala na ciekawe gry w golfa.
(=>:@.split)
powinien działać, ale nie działa :(źródło
MATL,
14124 bajtówWypróbuj go w MATL Online (link ma modyfikację na końcu, aby pokazać wymiarowość wyjściowej tablicy komórek).
Wyjaśnienie
źródło
CJam, 5 bajtów
Wyjaśnienie:
źródło
Ruby używa „-n”, 17 + 1 = 18 bajtów
Jak to działa
*$*
dzieli łańcuch i możemy go użyć jako parametru dlasplit
funkcjichomp
ale każde inne rozwiązanie wydaje się być dłuższe.źródło
Rebol, 33 bajty
źródło
GNU sed , 48 + 1 (flaga r) = 49 bajtów
Wypróbuj online!
W sed nie ma żadnych typów danych, ale naturalną reprezentacją listy byłby zbiór linii. Jako taki format wejściowy składa się z rekordów DSV, każdy w osobnej linii, z separatorem obecnym w pierwszym wierszu.
Objaśnienie: z założenia sed uruchamia skrypt tyle razy, ile jest linii wejściowych
źródło
REXX, 95 bajtów
Jako argument przyjmuje nazwę pliku i separator, zawartość pliku jest umieszczana w rdzeniu
o
.źródło
APL (Dyalog) , 4 bajty
W wersjach do 15.0 włącznie, wymaga
⎕ML←3
to domyślnie wielu. Od wersji 16.0⊂
można po prostu zastąpić przez⊆
dla tego samego efektu.Traktuje separator jako lewy argument, a DSV jako prawy argument.
Wypróbuj online!
≠
nierówności (lewego i prawego argumentu)⊂¨
podziel każdy⊢
słuszny argumentPrzez podział oznacza usunięcie wszystkich elementów wskazanych przez odpowiednie zero w lewym argumencie i rozpoczęcie nowej partycji za każdym razem, gdy odpowiednia liczba w lewym argumencie jest większa niż jego poprzednik, tj. Na każdym, jeśli lewy argument jest logiczny, ponieważ tak jest w tym przypadku.
źródło
R, 8 bajtów (2 sposoby)
R ma dwie wbudowane funkcje, które spełniają wymagania tego wyzwania:
pobiera wektor ciągów i separator i zwraca listę wektorów oddzielonych ciągów.
pobiera nazwę pliku i separator i zwraca ramkę danych. Technicznie może to być 10 bajtów, ponieważ potrzebuje opcji,
header=F
więc nie odczyta pierwszych elementów jako nazw kolumn. Obecnie link TIO odczytuje ze standardowego wejścia.Wypróbuj je online!
źródło