16

私はPythonと正規表現にまったく慣れていないので、電子メールアドレスの最初の部分をドメイン名まで抽出する方法を考えていました。したがって、たとえば次の場合:

s='xjhgjg876896@domain.com'

正規表現の結果を(番号などを含むすべての「種類」の電子メールIDを考慮に入れて)したいと思います。

xjhgjg876896

「@」までスキャンして結果を保存する必要があることを知っているので、正規表現のアイデアを思いつきますが、これをPythonで実装する方法がわかりません。

御時間ありがとうございます。

4

11 に答える 11

57

split文字列のメソッドを使用する必要があります。

s.split("@")[0]
于 2013-03-04T20:28:47.447 に答える
4

他の人が指摘しているように、より良い解決策はを使用することsplitです。

あなたが本当に使用regexに熱心であるなら、これはうまくいくはずです:

import re

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

そしてそれは印刷されます

foo

注:これは、の電子メール文字列でのみ機能しますSOMEONE@SOMETHING.TLD。タイプの電子メールを照合する場合NAME<SOMEONE@SOMETHING.TLD>は、正規表現を調整する必要があります。

于 2013-03-04T20:38:19.743 に答える
3

正規表現やを使用しないでくださいsplit

local, at, domain = 'john.smith@example.org'.rpartition('@')
于 2019-03-13T16:29:23.500 に答える
1
#!/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('foo.goo@bar.com')

出力:

Username :  foo.goo
Domain   :  bar
Type     :  com
于 2018-03-10T08:10:07.720 に答える
1

これは、インデックス方式を使用する別の方法です。

s='xjhgjg876896@domain.com'

# Now lets find the location of the "@" sign
index = s.index("@")

# Next lets get the string starting from the begining up to the location of the "@" sign.
s_id = s[:index]

print(s_id)

そして出力は

xjhgjg876896
于 2020-03-05T20:03:17.380 に答える
1

パッケージpipinstallemail_splitをインストールする必要があります

from email_split import email_split
email = email_split("ssss@ggh.com")
print(email.domain)
print(email.local)
于 2021-02-02T12:36:59.190 に答える
0

数ヶ月前にEmailExtractor.pyを書きました。試してみて、必要に応じて変更することをお勧めします。メールアドレスを抽出します。'@'(推奨)で出力を分割するか、正規表現を変更できます。

于 2013-03-04T21:04:25.403 に答える
0

以下はあなたがそれをするのを助けるべきです:

 fromAddr = message.get('From').split('@')[1].rstrip('>')
        fromAddr = fromAddr.split(' ')[0]
于 2013-05-15T14:08:27.013 に答える
0

良い答えはすでに答えられていますが、とにかく私のものを置きたいです。

  • メールjohn@gmail.comがある場合は、「john」だけを取得したいと思います。

    「ジョン」だけを手に入れたい

  • john.joe@gmail.comにメールを送信した場合、「john」だけを取得したい

    「ジョン」だけを手に入れたい

だからこれは私がしたことです:

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

乾杯

于 2016-05-22T22:59:44.003 に答える
0

email_splitを使用することもできます。

from email_split import email_split
email = email_split('xjhgjg876896@domain.com')
email.local  # xjhgjg876896
email.domain  # domain.com

詳細については、https://pypi.org/project/email_split/を参照してください。幸運を :)

于 2018-11-09T21:57:26.800 に答える
0

メール内のすべての単語を見つけて、最初の単語を返すことができます。

import re
def returnUserName(email):
    return re.findall("\w*",email)[0]

print(returnUserName("johns123.ss@google.com"))   #Output is - johns123
print(returnUserName('xjhgjg876896@domain.com'))  #Output is - xjhgjg876896
于 2021-10-30T03:50:43.617 に答える