CSV "adatleírót" keresek. Van ilyen?
Olyan egyszerű (lehetőleg multiplatform / online) eszközre lenne szükségem, ami egy közel 7000 soros csv-t végignéz és megállapítja az adott oszlopok maximum hosszát. Adatbázisba szeretném betölteni, így szükségem lenne az információra, hogy melyik oszlopba maximum hány karakter került. Sajnos a CSV-hez nem kaptam semmiféle dokumentációt (szokás szerint), a 60 oszlopot és 7000 sort pedig nem szeretném végignézni.
Írhatnék rá szkriptet (és ha nincs rá valami akkor fogok is) de ha van valami kész és egyszerű, praktikus kis utility akkor nem találnám fel a spanyol viaszt. :)
CSVpad-al próbálkoztam (elég gyors, megtekintésre kifejezetten jó) de ezt nem tudja sajnos.
Köszi!
Megoldottam, mert sürgős volt.
awk -F, 'NR!=1 { if (max_NF < NF) max_NF = NF;
for (i=1; i<=NF; i++) if (max[i] < length($i)) max[i] = length($i) }
END { for (i=1; i<=max_NF; i++) printf "%-2d | %d\n", i, max[i] }' file.csv
forrás:
persze ettől még a kérdés továbbra is "aktív", mert egy grafikus kis utility jobb lenne ha lenne :)
Olyat aligha találsz. Ha a cella is tartalmaz , karaktert azt is vajon helyesen kezeli?
Én megcsináltam online futtatható python szkriptbe: [link]
#3 Nagyon szépen köszönöm. Kipróbáltam (a valid teszt adatokkal nagyon szuperül fut offline is), de sajnos az eredeti csv olyan trehány módon van összerakva, hogy az alábbi hibákat kaptam:
input
Traceback (most recent call last):
File "main.py", line 9, in <module>
main()
File "main.py", line 3, in main
data = np.genfromtxt('example.csv', delimiter=',', dtype=str)
File "/usr/lib/python3/dist-packages/numpy/lib/npyio.py", line 1667, in genfromtxt
raise ValueError(errmsg)
ValueError: Some errors were detected !
Line #9 (got 29 columns instead of 27)
Amúgy nem csodálom... az RFC 4180-al köszönőviszonyban sincs a forrás. (Nem tudom miért ekkora feladat egy normális csv állományt előállítaniuk.) pl.: UTF8, de az egyik sor közepén: 0Ã…Â160
áhh.. agyrém. élmény lesz feldolgozni.
Ha lesz időm tovább fejlesztem és lekezelem majd az ilyen hibákat. Kiindulási alapnak nagyon jó, köszönöm. Nem sokat python-oztam eddig, de ideje elkezdeni... :)
Nem is azért amit írtál, hanem amit én írtam, nem is kezeli ha a cella is tartalmaz vessző karaktert , kész csalódás ez részemről.
Bánom hogy nem a jól bejáratott módszerek egyikével mutattam be amivel használni szoktam, hanem magamnak is akartam valami újat, numpy modullal hogy lehet e arra kerestem rá.
Házi feladat a pandas modullal megcsinálni (ezzel rengeteg csv-t már feldolgoztam az évek alatt, néha be kell paraméterezni a read_csv függvényt ha hülyén kódolták a csv-t):
A csv modullal se volt ilyen bajom sose több éves tapasztalatom szerint: [link]
Ebben viszont az a jó hogy akkora csv fájlt is fel lehet dolgozni vele akár ami el se férne a memóriába. Ugyanakkor ugyanez a hátránya is hogy csak végig iterál soronként a csv-n, minden féle okosságot magadnak kell megoldanod ha memóriába akarod tartani a táblázatot.
Megjegyzés:
Azaz awk szkript se kezeli azt esetet mint sajnos ez a genfromtxt se, ha egy cellán belül is van vessző.
Ha csak vessző lenne.... találtam olyan sort ami túl lóg a fejlécen :D :D
Bírom amikor Icuka kézzel előállít egy adatfájlt majd a nyakamba sózzák, hogy "nesze. töltsd be."
Most már ott tartok (gyorsaság kedvéért, mert pythonban nem mozgok otthonosan) hogy külön laravel-zero -ra épülő alkalmazást írok ami kijavítja mert egy normális csv feldolgozó sem fogja így "megenni".
Írtad,hogy online cucc is jó, dehát ebből arra következtetek hogy tudod hogy onnantól kezdve ahogy feltöltötted valahova azaz övéké vehetjük úgy, vagyis hogy ez nem gond. Azért írom mert megnézném én is be tudom e parsolni python-al. Ha mégis gond lenne akkor olyan mintát kérek csv-nek ami rá jellemző amik abba előfordulnak. Ha tényleg olyan súlyos vagy karakterkódolási/dekódolási hiba van akkor hex editorral szerkesztett példa hozzáértéssel a jó, a szövegszerkesztőből vagy táblázatkezelővel megnyitott másolt nem biztos hogy hűen tükrözött hiba demonstrálására alkalmas példa készítésére hogy jó ha vágólapra másolod, vagy táblázatkezelő se biztos hogy helyes mintát ad ha azzal repodukálsz egy ilyen példát (sőt még minden féle módosítás nélkül ha csak rámentesz is felülírhatja akár máshogy ha kódolási/dekódolási hiba van) , bináris módba le kell ellenőrizni. (pl hex editorral vagy nézegetővel leellenőrizhető, tetten érhető).
Akár privátba is oké. Próbálok írni arra is egy python szrkiptet csak a kíváncsiság kedvéért. Ja és rakd zip-be vagy 7z-be nehogy túl okos akarjon lenni a fájlmegosztó, hogy nem bináris módba dolgozik. Meg küldj hozzá egy sha1sum-ot, ez kommentbe is jó. Ekkor biztosan azt kapom amit kell. Viszont most alszom, majd megnézem ha felkeltem meg lesz rá időm.
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!