python script - list Name values na zaklade email domeny

Programovacie jazyky, rady, poradňa...
meffisto
King
King
Používateľov profilový obrázok
Príspevky: 1681
Registrovaný: 02 apr 2006, 13:18
Bydlisko: Tokyo

python script - list Name values na zaklade email domeny

Príspevok od používateľa meffisto »

caute, vedel by mi niekto poradit, ako pomocou scriptu v pythone vyriesit nasledovne?
mam csv file co ma dva stlpce (email / meno)
- zadanie je ze v stlpci "email" treba identifikovat najcastejsiu domenu and potom vypisat vsetky mena ludi zo stlpca "meno" co pouzivaju email z tej domeny identifikovanej v prvom kroku.

priklad dat
Ferko Mrkvicka / [email protected]
Janko Tekvicka / [email protected]
Ivan Truhlik / [email protected]

vystup
Ferko Mrkvicka
Ivan Truhlik

Velka vdaka
Aiden
Darca
Darca
Používateľov profilový obrázok
Príspevky: 2213
Registrovaný: 06 apr 2007, 14:28

Re: python script - list Name values na zaklade email domeny

Príspevok od používateľa Aiden »

Napriklad takto, ale zavisi, ake dlhe je to tvoje CSV. Ak tam mas miliony zaznamov, uvazoval by som o inom postupe :)

Kód: Vybrať všetko

import re

src_data = [
    ("Ferko Mrkvicka", "[email protected]"),
    ("Janko Tekvicka", "[email protected]"),
    ("Ivan Truhlik", "[email protected]"),
]

domains = {}

# dostanes lowercase domenu
def parseDomain(email):
    matches = re.match( r'.*@(.*)', email, re.I)
    return matches.group(1).lower()

# pre kazdy riadok v liste
for row in src_data:
    # zisti domenu
    domain = parseDomain(row[1])

    # ak ju vidime prvy krat
    if (domain not in domains):
        # priprav dict
        domains[domain] = []

    # pridaj meno do listu k domene
    domains[domain].append(row[0])

# najdi domenu s najviac menami
max_domain = max(domains, key=lambda k: len(domains[k]))

print domains[max_domain] # ['Ferko Mrkvicka', 'Ivan Truhlik']
Napísať odpoveď