Sziasztok, van egy listám, mondjuk kérdések vannak benne
questions = ["\n", "\n", "\n", "elso kerdes", "masodik kerdes", "\n" "harmadik kérdés", "negyedik kérdés", "ötödik kérdés", "\n", "n\"]
ebből szeretnék olyat csinálni, hogy
elso_group = ["elso kerdes", "masodik kerdes"]
masodik_group = ["harmadik kérdés", "negyedik kérdés", "ötödik kérdés"]
azaz az első nem newline elemtől a következő nem newline karakterig tart egy csoport.
Elakadtam, tudtok segiteni? Hajlandó vagyok pénzt is fizetni érte ha valaki megcsinálja nekem
- 2913 megtekintés
Hozzászólások
Vegigmenni az elemeken for ciklussal, ha az elem nem "\n" akkor hozzaadod egy 'group_list' listahoz az erteket, ha "\n" es 'group_list' nem ures akkor lista elemeit hozzaadod elso_group-hoz (majd a masodikhoz kovetkezo adagot stb.) es 'group_list'-et kiurited es kezded elolrol?
- A hozzászóláshoz be kell jelentkezni
--
Ami elől menekülsz, az után szaladsz.
Megnézem, köszi
- A hozzászóláshoz be kell jelentkezni
Mi ennek a listának az eredeti formája? Nem fájlból kerül beolvasásra és aztán alakítod át listává? Mert, ha van a kérdések közt elválasztó, akkor a teljes listát sztringként kezelve sokkal könnyebb dolgod lenne.
Például, ha a kérdések közt tabulátor van:
>>> questions_string = 'elso kerdes\tmasodik kerdes\nharmadik kérdés\tnegyedik kérdés\tötödik kérdés'
>>> [e.split('\t') for e in ''.join(questions).strip().split('\n')]
[['elso kerdes', 'masodik kerdes'], ['harmadik kérdés', 'negyedik kérdés', 'ötödik kérdés']]
- A hozzászóláshoz be kell jelentkezni
szia, fájlból olvasom be. megnézem ezt a megoldást, a másikkal nem boldogultam. nem vagyok egy python guru.
- A hozzászóláshoz be kell jelentkezni
Ha a read() metódussal olvasol be a fájlból, akkor mi az eredmény sztring?
- A hozzászóláshoz be kell jelentkezni
igen, string
de az a baj, hogy minden sor végén van '\n' és az üres sorok a határolók a csoportoknál
--
Ami elől menekülsz, az után szaladsz.
- A hozzászóláshoz be kell jelentkezni
Beillesztenél ide egy részletet? Hogy lesz a te listádban minden kérdés külön elem?
- A hozzászóláshoz be kell jelentkezni
self.file_content = open(self.file_name).read().splitlines()
--
Ami elől menekülsz, az után szaladsz.
- A hozzászóláshoz be kell jelentkezni
Ha jól értem, akkor a kérdések csoportjait több újsor karakter választja el egymástól. Mert ekkor a dupla soremelést* lecserélheted tabulátorra és akkor használhatod azt, amit fent írtam. Csak kell némi takarítás a sztringeknél (strip() metódus).
* Vagy talán használhatsz reguláris kifejezéseket is a kettőnél több soremelés keresésére. Én nem ismerem ezt a témát (re) eléggé.
- A hozzászóláshoz be kell jelentkezni
Végeredményben, ha befér az egész egyben, egyetlen stringbe, akkor regex segítségével elég könnyű feldarabolni, csak kellene egy félórás doksi olvasás, mert nem emlékszem rá, pontosan hogyan (pl. hogyan kell megmondani, hogy a \n is karakter, nem szeparátor és hasonlók)
- A hozzászóláshoz be kell jelentkezni
Valószinuleg ezzel is meg lehetne oldani, de én HZ megoldását választottam.
Köszi még egyszer
--
Ami elől menekülsz, az után szaladsz.
- A hozzászóláshoz be kell jelentkezni
questions_string = '\n\n\nelső kérdés\nmásodik kérdés\n\nharmadik kérdés\n'
>>> [e.strip().split('\n') for e in re.split('\\n\\n+', questions_string) if e != '']
- A hozzászóláshoz be kell jelentkezni
Ezzel megleptél. Épp akartam kötekedni, hogy ez így nem fog menni, mert a sorvég jelnél meg fog állni a re, de kipróbáltam és nem...
- A hozzászóláshoz be kell jelentkezni
Ez szép
--
Ami elől menekülsz, az után szaladsz.
- A hozzászóláshoz be kell jelentkezni
import re
[e.split('\n') for e in ''.join(re.sub('\n{2,}','\r', open('filename').read())).strip().split('\r')]
- A hozzászóláshoz be kell jelentkezni
https://github.com/haa-zee/python-sandbox/blob/master/probak/lista_csop…
(itt a hupon ugye nincs syntax highlight és hasonlók?)
Nem pont a módosított feladványhoz illik, erre azt hiszem, lenne valami céleszköz is (array modulban talán), de úgy tűnik, működik. :)
- A hozzászóláshoz be kell jelentkezni
megnézem, köszi
--
Ami elől menekülsz, az után szaladsz.
- A hozzászóláshoz be kell jelentkezni
Azért számold hozzá, hogy nem egy profi pythonos kódja! Működget, működget, de egy pythonhoz valóban értő esetleg a haját tépné tőle. ;)
- A hozzászóláshoz be kell jelentkezni
Melyik lett a megoldás és mennyit fizetsz érte?
- A hozzászóláshoz be kell jelentkezni