Szabályos ékezetes ABC-rendezés mivel-hogyan? (bővebben lent)
Egyszerű, "," jellel tagolt táblázatot mibe tudnám beimportálni, ami az első adat alapján (magyar ékezeteket jól kezelve) szabályosan abc rendbe állítva rendezné a táblázatot, majd egy kimeneti fájlba mentené az eredményt? Excel (legalábbis most nekem angol van és magyar nincs kéznél) is rosszul kezeli. Nem tudom LibreOffice Calc esetén mi lenne a helyzet, megoldották -e a problémát.
SQLITE-vel mennyire lehet egyszerű megoldani a beimportálást, rendezést (sortby) és a kimeneti fájlba történő elmentést?
A táblázat első adata neveket tartalmaz, az utána lévő pedig a hozzá tartozó adatot, például:
Név,Osztályzat
Aladár,5
Álmos,3
Ödön,5
stb.
Nem teljesen világos, hogy milyen formátum a bemenet (txt?), és milyen kimenetet szeretnél látni (txt? Excel? Adatbázis?). Mindenesetre a kulcsszavak között megemlítetted a Pythont, én azt javasolnám, hogy írj egy rendező függvényt, ami paraméterként két szót vár, a visszatérési értéke pedig -1, ha az első paraméter van elől, 0, ha a paraméterek azonosak, és 1, ha a második paraméter van előrébb.
Pl.
my_sort("alma", "körte") -> -1
my_sort("alma", "alma") -> 0
my_sort("körte", "alma") -> 1
A függvény olyan módon végzi az összehasonlítást, ahogy megírod. Pl. csinálsz egy dict-et betű:szám párosokkal (ezzel definiálod a betűk rendezési srrendjét), aztán végigiterálsz a rövidebb szó betűin, és az első nem azonos betű (szám) alapján visszatérsz.
Azután (python 3-at feltételezve) a rendezést elvégzi a beépített sorted függvény:
from functools import cmd_to_key
sorted(your_list, key=cmd_to_key(my_sort))
Köszönöm a választ.
Txt a bemenet és ilyen kimenet is kellene.
Igazából a SQL (elvileg) simán rendezi a magyar ékezeteket is figyelembevéve, csak nem tudom miképpen kell megoldani.
Python-hoz pedig sajnos nem értek, most a napokban tervezek a tanulásnak nekikezdeni.
Nem bízok annyira magamban még, hogy ilyen függvényt összehozzak :-(
Megnéztem az sqlite rendezést, ugyanúgy utf-8 alapján (gondolom adatbázis függő is) rendez, mint minden más előre megírt rendező. A karakterkódolásban az ékezetes betűk teljesen külön vannak az ékezet nélküli kis és nagybetűktől, ezért a sorrend nagybetű -> kisbetű -> ékezetes betű. Emiatt például a "boszorkány" szó előrébb kerül, mint a "bárdos".
Lásd:
Értem, reméltem, hogy megoldották már valahol-valahogy.
Közben letöltöttem a LibreOffice-t, Calc-ot is kipróbáltam, sajnos az se oldotta meg.
"Á=1" "á=2" "É=3" "é=4" stb ékezetek helyére számok beszúrása egy ideiglenes változóba és az alapján történő rendezés szerinted így megoldja problémámat?
Python-ban elvileg megoldották e problematikát, csak én vagyok olyan amatőr hogy nem értek Python-hoz :-(
A belinkelt megoldás sem jó, az Á-t előrébb veszi, mint az A-t. Továbbra is azt mondom, hogy a saját script lesz a legkézenfekvőbb.
Csinálj egy dictionaryt, betű:szám párokkal, ami úgy definiálja a sorrendet, ahogy neked tetszik:
order = {
"a":1,
"A":2,
"á":3,
"Á":4,
...
}
Megírtam neked a rendező függvényt:
Ezután:
from functools import cmp_to_key
Legyen egy listád, ami a rendezendő elemeket tartalmazza, pl. my_list néven, és aztán rendezed:
sorted list = sorted(my_list, key=cmp_to_key(cmp))
print(sorted_list)
Kapcsolódó 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!