Otwórz lub wklej plik CSV, a każdy wiersz stanie się jednym elementem listy YAML z kluczami z nagłówka. Domyślnie każda wartość pozostaje tekstem, a wartości, które parser YAML zinterpretowałby inaczej – NO, yes, 0150, 2024-03-01, null – są ujmowane w cudzysłów, więc po wczytaniu wyglądają dokładnie tak, jak je zapisano. Plik jest konwertowany w Twojej przeglądarce i nigdy nie jest wysyłany na serwer.
Jak przekonwertować CSV do YAML
- Kliknij Otwórz plik, upuść plik
.csv,.tsvlub.txtna narzędzie albo wybierz Wklej. Jeśli klucze wyglądają nieprawidłowo, sprawdź ogranicznik i kodowanie w sekcji Ustawienia importu. - Wybierz Typy wartości i sposób zapisu w polu Puste komórki. Karta YAML pokazuje dokładnie ten tekst, który znajdzie się w pobranym pliku.
- Wybierz Wcięcia, a potem kliknij Kopiuj lub Pobierz YAML.
Wynikiem jest sekwencja najwyższego poziomu (elementy - key: value) – struktura używana w danych testowych (fixtures), danych startowych i plikach danych generatorów stron statycznych. Jeśli zamiast tego potrzebujesz JSON, narzędzie CSV do JSON ma te same opcje typów.
Opcje wyniku YAML
| Zachowaj wszystkie wartości jako tekst | Ustawienie domyślne. Każda wartość jest ciągiem znaków YAML; cudzysłowy są dodawane tylko tam, gdzie zwykły skalar zostałby odczytany jako coś innego. |
|---|---|
| Rozpoznawaj liczby i true/false | Kolumna staje się liczbami YAML tylko wtedy, gdy każda niepusta wartość jest zwykłą liczbą bez zer wiodących i z najwyżej 15 cyframi znaczącymi; kolumny true/false (dowolna wielkość liter) stają się wartościami logicznymi. yes/no i daty pozostają ciągami znaków w cudzysłowie. Liczby są zapisywane w postaci kanonicznej, więc 1.50 staje się 1.5. |
| Puste komórki | null (domyślnie) zapisuje key: null; Pusty tekst "" zapisuje key: ""; Pomiń klucz usuwa ten klucz z danego wiersza. |
| Wcięcia | 2 spacje (domyślnie) lub 4 spacje dla kluczy pod każdym elementem listy. |
Jak cytowane są niejednoznaczne wartości
Wynik jest zapisywany tak, aby był odczytywany identycznie przez parsery YAML 1.2 i przez starsze parsery YAML 1.1, takie jak PyYAML, które traktują więcej słów jako wartości logiczne i liczby.
- Kody krajów i odpowiedzi:
NO,yes,off,yionsą ujmowane w cudzysłów, więc kod Norwegii nie zostanie wczytany jakofalse. Dotyczy to także kluczy ("on": x). - Zera wiodące:
0150i08001są ujmowane w cudzysłów; bez cudzysłowu YAML 1.1 odczytuje je jako liczby ósemkowe lub dziesiętne i gubi zero. - Daty i liczby w trybie tekstowym:
2019-04-01i12są ujmowane w cudzysłów, aby nie zostały wczytane jako znacznik czasu lub liczba całkowita. - Tekst przypominający null: komórka zawierająca
nulllub~jest ujmowana w cudzysłów, więc pozostaje wpisanym tekstem i nie myli się z pustą komórką. - Podziały wiersza wewnątrz wartości zamieniają się w blok dosłowny
|-, a tekst zawierający:lub#jest ujmowany w cudzysłów. Długie linie nigdy nie są zawijane. - Nagłówki są używane jako klucze dokładnie w zapisanej postaci, łącznie ze spacjami, polskimi znakami i pismami niełacińskimi. Pusty nagłówek staje się
Column 3, a powtórzony –name (2).
Typowe problemy przy konwersji CSV do YAML
- Kolumna liczbowa pozostała w cudzysłowie mimo opcji Rozpoznawaj liczby i true/false. Co najmniej jedna wartość nie jest zwykłą liczbą, np.
1,5,12 kglub007. Znajdziesz ją w przeglądarce CSV. - Kolumna yes/no nie stała się wartościami logicznymi. Konwertowane są tylko
trueifalse, boyes,noionoznaczają wartości logiczne wyłącznie w YAML 1.1. Jeśli potrzebujesz wartości logicznych, najpierw zamień je w CSV narzędziem Edytor CSV. - Klucze zawierają dziwne znaki, np. é. Plik nie jest zapisany w UTF-8. Wybierz jego kodowanie w ustawieniach importu.
- Wszystko jest pod jednym kluczem. Ogranicznik został źle rozpoznany; ustaw go w ustawieniach importu.
Limity i prywatność
Pliki do 25 MB, 100 000 wierszy lub 2 mln komórek otwierają się z podglądem pierwszych 200 wierszy na żywo. Większe pliki są konwertowane strumieniowo: plik jest odczytywany dwukrotnie we fragmentach (raz, aby zmierzyć kolumny i ich typy, i drugi raz, aby zapisać wynik), komunikat informuje, że pobrany plik obejmuje całość, a przycisk Kopiuj nie jest dostępny. Pojedynczy plik wynikowy może mieć najwyżej 4 GB.
Konwersja odbywa się w tle w tej karcie, więc strona cały czas reaguje, a Anuluj przerywa pracę. Plik CSV nigdy nie jest wysyłany na serwer.
Przykład: lista klientów z kodami krajów i kodami pocztowymi
Lista klientów z kodami krajów, kodami pocztowymi z zerami wiodącymi, flagami yes/no, datami i pustymi komórkami, przekonwertowana z ustawieniami domyślnymi (wszystko jako tekst, puste komórki jako null). Przy opcji Rozpoznawaj liczby i true/false zmienia się tylko orders – na 12, 3 i 7.
country,code,postcode,vat_registered,since,orders Norway,NO,0150,yes,2019-04-01,12 Spain,ES,08001,no,2021-11-15,3 United States,US,02134,,,7
- country: Norway code: "NO" postcode: "0150" vat_registered: "yes" since: "2019-04-01" orders: "12" - country: Spain code: ES postcode: "08001" vat_registered: "no" since: "2021-11-15" orders: "3" - country: United States code: US postcode: "02134" vat_registered: null since: null orders: "7"
Pytania i odpowiedzi
Dlaczego `NO` jest w cudzysłowie?
W YAML 1.1 niecytowane NO, no, off i n oznaczają fałsz. Cudzysłów sprawia, że norweski kod kraju albo każda odpowiedź zapisana jako no pozostaje tekstem w każdym parserze.
Czy mogę zamiast listy dostać jedno mapowanie z kluczami według identyfikatora?
Nie. Każdy wiersz CSV jest zapisywany jako jeden element listy, w kolejności z pliku. Wynik z kluczami nie jest tu dostępny.
Czy wynik jest poprawnym YAML 1.2?
Tak. Dodatkowe cudzysłowy potrzebne dla YAML 1.1 są nadal poprawne w YAML 1.2; jedynie jawnie oznaczają wartości, które i tak były ciągami znaków.