Kezdőoldal » Számítástechnika » Programozás » Szabályos ékezetes ABC-rendezé...

Szabályos ékezetes ABC-rendezés mivel-hogyan? (bővebben lent)

Figyelt kérdés

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.



2020. ápr. 1. 09:12
 1/9 Ozmium42 ***** válasza:

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))

2020. ápr. 1. 10:04
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:

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 :-(

2020. ápr. 1. 10:21
 3/9 Ozmium42 ***** válasza:

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:


[link]

2020. ápr. 1. 10:29
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:

É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?

2020. ápr. 1. 10:43
 5/9 Ozmium42 ***** válasza:
További problémád lehet, hogy a magyar nyelvtan szabályai szerint a többjegyű mássalhangzókat sem fogod tudni szabályosan rendezni, mert pl. "zs" meg fogja előzni "zu"-t pedig szabályosan fordítva lenne.
2020. ápr. 1. 10:45
Hasznos számodra ez a válasz?
 6/9 A kérdező kommentje:

Python-ban elvileg megoldották e problematikát, csak én vagyok olyan amatőr hogy nem értek Python-hoz :-(

[link]

2020. ápr. 1. 10:47
 7/9 Ozmium42 ***** válasza:

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:


[link]


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)

2020. ápr. 1. 11:24
Hasznos számodra ez a válasz?
 8/9 Ozmium42 ***** válasza:
az utolsó előtti sorted elrontottam, a változó név "sorted_list" akart lenni.
2020. ápr. 1. 11:30
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:
Köszönöm, hogy megírtad a függvényt. Elég kellemetlen számomra, de így se tudtam összehozni, viszont az Excel-es rendezési problémára találtam megoldást és tökéletesen rendezi. :-)
2020. ápr. 1. 18:09

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!