Keresés

Hirdetés

Új hozzászólás Aktív témák

  • imibogyo

    veterán

    Lehet nem jó helyen kérdezek, bár szerintem topik-on (PHP, Python, SQL megoldásokra gondolok/számítok, mint lehetséges megoldások a netes kereséseimre alapozva)...

    Az lenne a problémám, hogy van egy sokezer sorból álló vesszővel elválasztott, idézőjelek közötti adatokat tartalmazó CSV állományom mely tele van duplum sorokkal. A sorok mindig azonos számú oszlopból állnak, kivétel ez alól a csillagozás, mely egy új egyedi oszlopba került (esetleg a többi rekordnál segíthet, ha ide, az adott sor tekintetében üres cellába egy egyedi karaktersort teszünk?)...

    Például:
    "Alma","Körte","1989","","","piros","","","<100>","<200>"
    "Alma","Körte","1989","","","piros","","","<100>","<200>"
    "Alma","Körte","1989","","","piros","","","<100>","<200>","****"

    Na most az alap duplumszűrést NP++-ban elvégeztem TextFX-el és a tökéletesen egyforma sorokkal meg is birkózott. Az eredeti 55.000 sorból nagyjából 23.000 maradt. Ez eddig OK. Ez lett az eredmény.

    "Alma","Körte","1989","","","piros","","","<100>","<200>"
    "Alma","Körte","1989","","","piros","","","<100>","<200>","****"

    Viszont ahogy látható vannak még duplikációk bőven, mivel a megmaradt duplum sorok nem 100%-ban egyformák (lásd csillagos jelölés, amire szükségem is lenne a jövőben).

    Megpróbáltam Excellel is az ismétlődéseket eltávolítani, és bár ez látszólag tökéletes munkát végzett, ugyanis minden ilyen 2-es 3-as 4-es ismétlődésből csak 1 maradt, de itt meg más problémába ütköztem. Ez ugyanis a duplum feltételekként megadott oszlopokat jól lekezelte (Alma, 1989, 100 például), viszont ha csak ennyit adtam meg neki feltételnek, akkor hol a csillagozott sor maradt meg az egyformákból, hol nem, vagyis random lett az eredmény (mivel ugye a csillagozás nem volt feltétel). Ez nekem nem jó, mivel a csillagozás ellenőrzöttséget jelent (esetleg mássá át lehet konvertálni, ha az megoldást hozhat). Ha viszont megadtam az Excelnek, hogy figyelje a csillagos oszlopot is, akkor pedig ugyanazt az eredményt kaptam, mint NP++ esetében, mivel ebben az esetben (jogosan) különbözőnek titulálta a sorokat:

    Arra lenne szükségem, hogy a sorokat úgy vonja össze egy valamilyen program, hogy mindig a "leghosszabb" / legtöbb oszlopból álló sort vagyis a csillagozott sort tartsa meg az ismétlődések közül. Jelenleg 8832 ilyen csillagozott rekordom van, amit természetes módon nem szeretnék "elveszíteni", mivel ez 8832 ellenőrzött rekordot jelent. :B

    [ Szerkesztve ]

  • imibogyo

    veterán

    válasz disy68 #9980 üzenetére

    fogsz egy bármilyen nyelvet és magad írod meg a logikát
    HA erre képes lennék nem kérdeznék itt... Én egy már kész, "bevált" szkriptet, vagy megoldást vártam volna, hátha van már valakinek elfekvőben egy, vagy kényszerült már rá ilyet mókolni. A neten találtam számos duplummal foglalkozó témát, de mindegyik a 100%-ban azonos sorokra volt kihegyezve, az meg ugye nekem egyrészt nem jó, másrészt azt már eleve el tudom végezni.

    Az Exceles ötletet viszont köszönöm. :R Ez jó lehet, mivel nem tudtam, hogy az elsőt tartja meg, én úgy "éreztem" random a dolog, bár az is tény, hogy komolyabban idő hiány miatt nem vizsgáltam meg a dolgot, mivel ma reggeli a probléma, ma másoltam össze az állományokat.

    SZERK: Köszönöm! Az Exceles megoldás működött. Verem a fejem a falba, hogy egy ilyen egyszerű megoldás nem jutott eszembe. :R

    (#9981) martonx: nem tűnik okoskodásnak. :B Viszont sajnos csak az alap CSV generálására volt minimális ráhatásom, arra sem sok mivel az alap struktúrát egy program köpte ki, amibe majd vissza is akarom olvastatni a kész CSV-t. Abba már nem fognak belekerülni a csillagos mezők, az csak nekem kell a leltározáshoz, hogy tudjam hol tartunk. Viszont kitörölgetni sem akarom a csillagokat, mert akkor a nagyságrendileg 20.000-es állományból eddig leleltározott 8300 rekord ellenőrzöttsége is "elveszne".

    Alternatívaként persze meg tudom azt tenni, hogy kitörlöm az összes csillagot egy új fájlban és elvégzem a duplumszűrést. De akkor meg ugye a 2 fájl nem lesz szinkronban és párhuzamosan kell bennük dolgoznom. Egy amiben leltározunk, egy meg ami megy a gépnek importra. A legegyszerűbb persze programon belül lenne leltározni, de arra nincs lehetőség.

    Az egész probléma egyébként abból adódott, hogy az alap kb. 19.000 soros CSV-n végül 3 csapatban dolgoztunk (innen a 3x-os adatmennyiség ugyanabból a rekordból) a mester fájlba nem szerettem volna ha bele tudnak nyúlni az ideiglenesen itt dolgozó diákok, ezért minden csoport kapott egy offline változatot belőle. Amikor lejárt a 3 hetes munkaidejük fogtam a 3 fájlt és összemásoltam őket, mert úgy gondoltam, hogy egy "egyszerű" duplumszűréssel majd összevonom az egészet ami igaz is lett volna, ha nincs az egyedi jelölésünk. Na itt tartok most. :D

    [ Szerkesztve ]

  • imibogyo

    veterán

    válasz bambano #9983 üzenetére

    Na igen pont azért kérdeztem itt, mert biztos voltam benne, hogy valakinek ez ujjgyakorlat. Viszont attól, hogy most ezt leírtad, hogy nem nagy durranás linuxon awk-ban, ettől még ÉN nem lettem volna előrébb, ez nem segítség egy amatőrnek a témában. De a másik megoldás már működött, így végülis lényegtelen. :K

Új hozzászólás Aktív témák