Van egy e-mail címeket tartalmazó fájlom. Addig eljutottam, hogy tömbbe rendeztem őket. Rengeteg hibás e-mail cím van a listában. Hogyan tudom ezeket javítani? A szóközöket már kitudtam venni a címekből, ami kellene még:
- Nagybetűket kisbetűkre alakítani.
- Ékezetes karaktereket átalakítani (angol ABC).
- Speciális karaktereket törölni.
... vagy nem kell átkonvertálni csak egyszerűen ismerje fel, hogy valós vagy sem az e-mail cím.
Kezdő programozó vagyok. A segítséget előre is köszönöm.
- 3145 megtekintés
Hozzászólások
... vagy nem kell átkonvertálni csak egyszerűen ismerje fel, hogy valós vagy sem az e-mail cím.
Én ezek elolvasásával állnék neki a feladatnak:
http://www.regular-expressions.info/email.html
http://www.regular-expressions.info/regexbuddy/email.html
http://docs.python.org/library/re.html
Egyéb infó a fenti 3 ponthoz:
1.)
http://docs.python.org/library/stdtypes.html#string-methods (Ctrl +F str.lower)
http://docs.python.org/library/string.html
2.)
(ezt más toolokkal sokkal egyszerűbben meg lehet oldani szerintem, pl.:http://packages.ubunut.com/oneiric/unaccent)
Nem igaz, lásd a lent említett: http://pypi.python.org/pypi/Unidecode
http://effbot.org/zone/unicode-convert.htm
https://bitbucket.org/timv/python-extras/src/c8f4f50b23bb/text/latin_to…
Nem igaz, lásd a lent: http://pypi.python.org/pypi/Unidecode
(Ez valóban sokkal jobbnak tűnik.)
3.)
http://docs.python.org/library/stdtypes.html#string-methods (Ctrl +F str.replace)
http://docs.python.org/library/re.html
Fogsz majd még szívni ezzel azzal.
Ha mindenképpen át akarod alakítani, akkor azzal kezdeném,
hogy először valami ASCII félét csinálnék belőle (unaccent), aztán jöhet a többi.
Ez is hülyeség, szintén lásd lent.
(Mindezeket úgy írom, hogy a Python tudásom nincs messze a 0-tól :))
Szerk.
- A hozzászóláshoz be kell jelentkezni
1. fentebb túlragozva, lower()-t neki!
2. nézz utána: unicodedata (egészen pontosan unicodedata.normalize kell majd neked)
3. ??? ez logikai kérdés... Ha bátor vagy, próbáld ki ezt:
http://pastebin.com/thaF0S0A
Ha szerencséd van, kis pofozással menni fog.
- A hozzászóláshoz be kell jelentkezni
Nezd meg az en megoldasomat. Regexszel minden sokkal egyszerubb, a regex tiszta, szaraz, es biztonsagos erzest nyujt... oppardon, az a kovetkezo reklam lesz :-)
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Nezd meg az en megoldasomat.
Hol?
- A hozzászóláshoz be kell jelentkezni
Alattad... Most mar alattam.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Hozzavalok:
- Telepitsd fel az Unidecode modult:
sudo pip install Unidecode
Utana ezzel a scripttel tudsz kiserletezni:
#!/usr/bin/env python
from unidecode import unidecode
import sys, os
import re
EMAIL_PATTERN = re.compile(r'\A[0-9A-Za-z][0-9A-Za-z\.\+=-]+@([a-z0-9]([-a-z0-9]*[-a-z0-9])?\.)+[a-z]{2,6}\Z')
if len(sys.argv) < 2:
print "Usage: %s TRANSLIT_STRING" % sys.argv[0]
exit(1)
src = unicode(sys.argv[1], "UTF-8")
ret = src
if not EMAIL_PATTERN.match(src):
# ASCII version
asrc = unidecode(src).lower()
ret = re.sub(r'[^\w]+', '', asrc)
print "Transcoded version is: ", ret
Az Unidecode gyakorlatilag elvegzi neked a transliteration muveletet, ami a gyakorlatban a nem-ascii karakterek megfelelelo ASCII atirasat jelenti.
Biztos meg lehet core pythonnal is csinalni, mentsegemre szoljon, hogy ilyen 15 percet aldoztam az idombol erre, es nem is vagyok pythonos emberke... :-)
A fenti script nem a problema megoldasa, mert nem tudom, milyen formatumu az adatbazis, meg honnan jon. Ha tudsz egy kicsit a kigyok nyelven - en csak dadogva sziszegek - akkor a fenti scripttel mar el tudsz indulni. Ha nem, ird meg, milyen formatumu az adatbazisod, es megnezem, mit tudok vele kezdeni.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Köszönöm a hozzászólásokat. Ezekből és ebből már összetudom rakni. Még egy kérdés: A replace függvénynek nem lehet több értéket adni? Hasonlóra gondolok mint itt, csak ugye nem PHP hanem Python.
- A hozzászóláshoz be kell jelentkezni
> ... vagy nem kell átkonvertálni csak egyszerűen ismerje fel, hogy valós vagy sem az e-mail cím.
Én inkább ezt mondanám. Kb. mint: a papíron nem ismerhető fel az adóazonosító, tippeljek vagy ne fogadjam el?
Aki nem tudja helyesen leírni az email címét, attól nem várható el, hogy csak az ékezetekben tévedett.
szaszi
- A hozzászóláshoz be kell jelentkezni
... másrészt aki elkezd érvénytelen* címekből akármilyen heurisztikával érvényeseket faragni, jó eséllyel fog olyan érvényes címet kalapálni, amely tulajdonosa az érintettek halmazán kívül esik - azaz ebből szpem lesz. Persze ha éppen a szpem a cél, akkor (önmoderálva) nem szóltam.
* Tkp. miért kell masszírozni azokat a szegény nagybetűket a címekben? Annál NAGYOBB HibájA sOsE leGyeN egY cíMlisTÁnaK!
- A hozzászóláshoz be kell jelentkezni
Erre nem is gondoltam. Igazad van. Lehet, hogy újra kitöltetem az űrlapot és csinálok normális ellenőrzést. Csak azt nem tudom, hogy mit mondjak a feletteseimnek.
- A hozzászóláshoz be kell jelentkezni
Igaz. Rengeteg hibalehetőség előfordulhat, nem csak ékezetek, speciális karakterek, szóközök és nagybetűk.
- A hozzászóláshoz be kell jelentkezni