2013-03-04 3 views
5

मैं पाइथन और रेगेक्स के लिए काफी नया हूं और मैं सोच रहा था कि डोमेन नाम तक ईमेल पते के पहले भाग को कैसे निकालना है। उदाहरण के लिए यदि:पायथन रेगेक्स को ईमेल पते का पहला भाग

s='[email protected]' 

मैं regex परिणाम चाहते हैं (ध्यान में रखते हुए सभी ईमेल आईडी के "प्रकार" संख्या आदि सहित यानी ..) होने के लिए:

xjhgjg876896 

मैं विचार प्राप्त रेगेक्स का - जैसा कि मुझे पता है कि मुझे "@" तक स्कैन करने की आवश्यकता है और फिर परिणाम संग्रहित करना है - लेकिन मुझे यकीन नहीं है कि इसे पायथन में कैसे कार्यान्वित किया जाए।

अपने समय के लिए धन्यवाद।

+0

आप इस के लिए regex का उपयोग करने के लिए _need_ करते हैं (जैसे, एक होमवर्क असाइनमेंट या कुछ और के हिस्से के रूप में)? या आप बस अनुमान लगा रहे हैं कि ऐसा करने का कोई और तरीका नहीं है? – abarnert

+0

यदि आपको _do_ को रेगेक्स का उपयोग करने की आवश्यकता है, तो आपको उन पर और पायथन 'री' मॉड्यूल पर एक ट्यूटोरियल पढ़ना होगा। अगर मैंने अभी कहा "re.match ('^ (। *?) @', ') का उपयोग करें," आप नहीं जानते कि वापस आने वाली चीज़ का उपयोग कैसे करें, इसे कैसे डिबग या विस्तारित करें, आदि। तो आप क्या बात हो? – abarnert

+0

क्या आप इन मान्य ईमेल पतों को भी पार्स करना चाहते हैं: 'टोनी स्नो <[email protected]>' और '(टोनी बर्फ़) टोनी @ example.com'? आप 'tony% example.com @ example.org' से वापस क्या करना चाहते हैं? ईमेल पते के प्रारूप के लिए वर्तमान मानक यहां है: http://www.rfc-editor.org/rfc/rfc5322.txt –

उत्तर

28

तुम बस तार के split विधि का उपयोग करना चाहिए:

s.split("@")[0] 
+2

यह * जॉन स्मिथ <[email protected]> * –

+0

@MaksymPolshcha जैसे ईमेल के लिए काम नहीं करेगा: ओपी ने यह निर्दिष्ट नहीं किया कि यह एक संभावित इनपुट था। –

+0

ओपी के रूप में यह एक regex नहीं है। –

4

के रूप में अन्य लोगों ने बताया है, बेहतर समाधान split उपयोग करने के लिए है।

आप regex के प्रयोग पर वास्तव में उत्सुक रहे हैं तो यह काम करना चाहिए:

import re 

regexStr = r'^([^@]+)@[^@]+$' 
emailStr = '[email protected]' 
matchobj = re.search(regexStr, emailStr) 
if not matchobj is None: 
    print matchobj.group(1) 
else: 
    print "Did not match" 

और यह

foo 

नोट बाहर प्रिंट: इस के ईमेल तार के साथ ही काम करने के लिए जा रहा है [email protected]। यदि आप NAME<[email protected]> के ईमेल से मेल खाना चाहते हैं, तो आपको रेगेक्स को समायोजित करने की आवश्यकता है।

+0

यह बहुत अच्छा काम करता है .. कुछ टाइपो और अन्य छोटी चीजें तय करें लेकिन यह अच्छी तरह से काम करता है .. "firstpart" लेता है और @ sign से पहले "firstpart.withdot" लेता है .. –

0

कुछ महीने पहले EmailExtractor.py लिखा था। आप इसे अपनी कोशिश के लिए कोशिश कर सकते हैं और इसे संशोधित करना चाहेंगे। यह ईमेल पता निकालता है। आप आउटपुट को '@' (अनुशंसित) के साथ विभाजित कर सकते हैं या रेगेक्स को संशोधित कर सकते हैं।

-1

नीचे की मदद करनी चाहिए आप यह कर:

fromAddr = message.get('From').split('@')[1].rstrip('>') 
     fromAddr = fromAddr.split(' ')[0] 
0

अच्छा जवाब पहले से ही उत्तर दिया गया है, लेकिन मैं मेरा वैसे भी रखना चाहते हैं।

  • तो मैं एक ईमेल [email protected] मैं सिर्फ "जॉन" प्राप्त करना चाहते है।

    मैं प्राप्त करने का एकमात्र "जॉन"

  • तो मैं एक ईमेल [email protected] है चाहता हूँ।कॉम मैं सिर्फ पाने के लिए "जॉन"

    मैं केवल प्राप्त करना चाहते हैं "जॉन"

चाहते हैं तो इस मैं क्या किया है:

name = recipient.split("@")[0] 
name = name.split(".")[0] 
print name 

चियर्स

0
#!/usr/bin/python3.6 


def email_splitter(email): 
    username = email.split('@')[0] 
    domain = email.split('@')[1] 
    domain_name = domain.split('.')[0] 
    domain_type = domain.split('.')[1] 

    print('Username : ', username) 
    print('Domain : ', domain_name) 
    print('Type  : ', domain_type) 


email_splitter('[email protected]') 

आउटपुट:

Username : foo.goo 
Domain : bar 
Type  : com 
संबंधित मुद्दे