Python - Jak načíst názvy ze seznamu

Arny

Python - Jak načíst názvy ze seznamu
« kdy: 18. 08. 2015, 00:54:16 »
Zdravím, mám seznam ve kterém jsou názvy domén bez www, čili aaa.cz, bbb.cz ccc.cz atd.. a snažím se z tohoto seznamu získat všechny názvy bez toho .cz (dohromady bez oddělovače). Snažím se, ale vůbec mi to nejde :-( Nepomohl by mi prosím někdo ? Díky moc.
Kód: [Vybrat]
mylist = ['aaa.cz', 'bbb.cz', 'ccc.cz']
names = mylist(key=lambda value: int(value.split('.', 1)[1]))
print(names) # aaabbbccc


suic

Re:Python - Jak načíst názvy ze seznamu
« Odpověď #1 kdy: 18. 08. 2015, 01:18:50 »
Zdar, zpusobu je mnoho. Napr.

Kód: [Vybrat]
print("".join(s[:-3] for s in mylist))
print("".join(s.split(".")[0] for s in mylist))

# prip se podivej na:
urllib.parse
# nebo
urllib.split


Sten

Re:Python - Jak načíst názvy ze seznamu
« Odpověď #2 kdy: 18. 08. 2015, 01:32:09 »
V Pythonu je místo split lepší používat slicing ([od:do]). Pro nalezení poslední tečky je rfind('.').

Kód: [Vybrat]
[ x[:x.rfind('.')] for x in mylist ]

grr

Re:Python - Jak načíst názvy ze seznamu
« Odpověď #3 kdy: 18. 08. 2015, 01:58:50 »
V Pythonu je místo split lepší používat slicing ([od:do]). Pro nalezení poslední tečky je rfind('.').

No ale tady v tom pripade je urcite lespi pouzit ten split. :)

Sten

Re:Python - Jak načíst názvy ze seznamu
« Odpověď #4 kdy: 18. 08. 2015, 02:05:01 »
V Pythonu je místo split lepší používat slicing ([od:do]). Pro nalezení poslední tečky je rfind('.').

No ale tady v tom pripade je urcite lespi pouzit ten split. :)

V čem je to lepší oproti tomu, co jsem napsal? Tedy kromě toho, že to bude o dost pomalejší


somemonster

Re:Python - Jak načíst názvy ze seznamu
« Odpověď #5 kdy: 18. 08. 2015, 08:46:52 »
import time
mylist = ['sadasda.asdad']*10000000
start_time = time.clock()
[ x[:x.rfind('.')] for x in mylist ]
print(time.clock() - start_time, "seconds rfind")
start_time = time.clock()
[ x.split('.')[0] for x in mylist]
print(time.clock() - start_time, "seconds split")


3.5121710000000004 seconds rfind
3.4531870000000002 seconds split

Arny

Re:Python - Jak načíst názvy ze seznamu
« Odpověď #6 kdy: 18. 08. 2015, 11:40:36 »
D9ky moc, ale nepřemýšlel jsem moc dopředu :-( Ty tečky tam potřebuju :-(

--,_O_,--

Re:Python - Jak načíst názvy ze seznamu
« Odpověď #7 kdy: 18. 08. 2015, 12:37:56 »
import time
mylist = ['sadasda.asdad']*10000000
start_time = time.clock()
[ x[:x.rfind('.')] for x in mylist ]
print(time.clock() - start_time, "seconds rfind")
start_time = time.clock()
[ x.split('.')[0] for x in mylist]
print(time.clock() - start_time, "seconds split")


3.5121710000000004 seconds rfind
3.4531870000000002 seconds split
To je hezké, ale split nedá požadovaný výsledek...
Kód: [Vybrat]
>>> x = ["abc.def.cz", "ayy.lmao.com"]
>>> [a.split('.')[0] for a in x]
['abc', 'ayy']
>>> [a.split('.') for a in x]
[['abc', 'def', 'cz'], ['ayy', 'lmao', 'com']

ByCzech

Re:Python - Jak načíst názvy ze seznamu
« Odpověď #8 kdy: 18. 08. 2015, 23:24:43 »
import time
mylist = ['sadasda.asdad']*10000000
start_time = time.clock()
[ x[:x.rfind('.')] for x in mylist ]
print(time.clock() - start_time, "seconds rfind")
start_time = time.clock()
[ x.split('.')[0] for x in mylist]
print(time.clock() - start_time, "seconds split")


3.5121710000000004 seconds rfind
3.4531870000000002 seconds split
To je hezké, ale split nedá požadovaný výsledek...
Kód: [Vybrat]
>>> x = ["abc.def.cz", "ayy.lmao.com"]
>>> [a.split('.')[0] for a in x]
['abc', 'ayy']
>>> [a.split('.') for a in x]
[['abc', 'def', 'cz'], ['ayy', 'lmao', 'com']

A ta vstupní data jste změnil schválně, aby to dosáhlo to co chcete, že :D

--,_O_,--

Re:Python - Jak načíst názvy ze seznamu
« Odpověď #9 kdy: 19. 08. 2015, 00:14:49 »
Data jsem změnil tak, aby demonstrovala nedostatek při použití split. Ze zadání není zřejmé, jestli tam jsou jenom 1st level domain názvy nebo jestli to má umět i věci jako bagr.wz.cz. A v tokovém případě je zpravidla lepší pracovat s obecnějším zadáním.

gamer

Re:Python - Jak načíst názvy ze seznamu
« Odpověď #10 kdy: 19. 08. 2015, 08:33:48 »
Data jsem změnil tak, aby demonstrovala nedostatek při použití split. Ze zadání není zřejmé, jestli tam jsou jenom 1st level domain názvy nebo jestli to má umět i věci jako bagr.wz.cz. A v tokovém případě je zpravidla lepší pracovat s obecnějším zadáním.

Když už se snažím udělat z někoho blbce, tak to nejdřív zkusím změnit pořádně, abych náhodou neudělal blbce ze sebe
Kód: [Vybrat]
>>> x = ["abc.def.cz", "ayy.lmao.com"]
>>> [a.split('.')[-2] for a in x]
['def', 'lmao']

--,_O_,--

Re:Python - Jak načíst názvy ze seznamu
« Odpověď #11 kdy: 19. 08. 2015, 12:46:11 »
Když už se snažím udělat z někoho blbce, tak to nejdřív zkusím změnit pořádně, abych náhodou neudělal blbce ze sebe
Kód: [Vybrat]
>>> x = ["abc.def.cz", "ayy.lmao.com"]
>>> [a.split('.')[-2] for a in x]
['def', 'lmao']
bagr.wz.cz -> wz ... to mi jako jednoznačně dobrý řešení teda nepřijde.

gamer

Re:Python - Jak načíst názvy ze seznamu
« Odpověď #12 kdy: 19. 08. 2015, 13:31:46 »
bagr.wz.cz -> wz ... to mi jako jednoznačně dobrý řešení teda nepřijde.

Počujte, Kefalín. A čo si vy predstavujete pod takým dobrým riešením? Toto?
Kód: [Vybrat]
>>> mylist = ['www.bagr.cz']
>>> [ x[:x.rfind('.')] for x in mylist ]
['www.bagr']
Kde je pointa? Nikde. Můžeme řešit blbosti a vždycky se najde případ, kdy to nebude fungovat "dobře". Ať už to "dobře" znamená cokoliv.

--,_O_,--

Re:Python - Jak načíst názvy ze seznamu
« Odpověď #13 kdy: 19. 08. 2015, 22:15:49 »
bagr.wz.cz -> wz ... to mi jako jednoznačně dobrý řešení teda nepřijde.

Počujte, Kefalín. A čo si vy predstavujete pod takým dobrým riešením? Toto?
Kód: [Vybrat]
>>> mylist = ['www.bagr.cz']
>>> [ x[:x.rfind('.')] for x in mylist ]
['www.bagr']
Kde je pointa? Nikde. Můžeme řešit blbosti a vždycky se najde případ, kdy to nebude fungovat "dobře". Ať už to "dobře" znamená cokoliv.

...nebo si můžu přečíst zadání :^)
Zdravím, mám seznam ve kterém jsou názvy domén bez www [...] snažím se [...] získat všechny názvy bez toho .cz...

ByCzech

Re:Python - Jak načíst názvy ze seznamu
« Odpověď #14 kdy: 19. 08. 2015, 22:55:48 »
bagr.wz.cz -> wz ... to mi jako jednoznačně dobrý řešení teda nepřijde.

Počujte, Kefalín. A čo si vy predstavujete pod takým dobrým riešením? Toto?
Kód: [Vybrat]
>>> mylist = ['www.bagr.cz']
>>> [ x[:x.rfind('.')] for x in mylist ]
['www.bagr']
Kde je pointa? Nikde. Můžeme řešit blbosti a vždycky se najde případ, kdy to nebude fungovat "dobře". Ať už to "dobře" znamená cokoliv.

...nebo si můžu přečíst zadání :^)
Zdravím, mám seznam ve kterém jsou názvy domén bez www [...] snažím se [...] získat všechny názvy bez toho .cz...

Přesně tak, změní vstupní data a zadání, aby demonstroval jak je jeho řešení lepší, když neprošlo to, že to má být údajně rychlejší.

Prostě jen další chytrolín co za každých okolností musí mít pravdu a když se mu ukáže, že ji nemá, tak si věci překroutí jinak a pak zase jinak...

Kde se tu bere tolik ješitů a psychopatů :D