Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
You are given an integer N followed by N email addresses. Your task is to print a list containing only valid email addresses in lexicographical order.
Valid email addresses must follow these rules:It must have the username@websitename.extension format type.
The username can only contain letters, digits, dashes and underscores.
The website name can only have letters and digits.
The maximum length of the extension is 3.
Concept :A filter takes a function returning True or False and applies it to a sequence, returning a list of only those members of the sequence where the function returned True. A Lambda function can be used with filters.
Let’s say you have to make a list of the squares of integers from 0 to 9(both included).
>> l = list(range(10))
>> l = list(map(lambda x:x*x, l))
Now, you only require those elements that are greater than 10 but less than 80.
>> l = list(filter(lambda x: x > 10 and x < 80, l))
Easy, isn’t it?
The first line of input is the integer N, the number of email addresses.
N lines follow, each containing a string.
Each line is a non-empty string.
Output a list containing the valid email addresses in lexicographical order. If the list is empty, just output an empty list, [].
3
lara@hackerrank.com
brian-23@hackerrank.com
britts_54@hackerrank.com
['brian-23@hackerrank.com', 'britts_54@hackerrank.com', 'lara@hackerrank.com']
import re
n = int(raw_input())
ans = []
for i in range(n):
s = raw_input()
match = re.search(r'^[\w\d-]+\@[a-zA-Z0-9]+\.\w?\w?\w?$',s)
if match:
ans.append(s)
ans.sort()
print ans
def fun(email):
try:
username, url = email.split("@")
website, extension = url.split(".")
except ValueError:
return False
if username.replace("-", "").replace("_", "").isalnum() is False:
return False
elif website.isalnum() is False:
return False
elif len(extension) > 3:
return False
else:
return True
import re
def fun(string):
if string.count("@") == 1 and string.count('.') ==1:
esplit = string.split('@')
user =esplit[0]
web = esplit[1].split('.')[0]
ext = esplit[1].split('.')[1]
return all([check_user(user),check_web(web),check_ext(ext)])
else:
return False
def check_user(strg, search=re.compile(r'[^a-zA-Z0-9-_]').search):
lenght = True if len(strg)>0 else False
return all([lenght,not(bool(search(strg)))])
def check_web(strg,search=re.compile(r'[^a-zA-Z0-9]').search):
lenght = True if len(strg)>0 else False
return all([lenght,not(bool(search(strg)))])
def check_ext(strg):
lenght = False
if len(strg) <= 3 and len(strg)>0:
lenght = True
return lenght
import re
def fun(s):
# return True if s is a valid email, else return False
'''
n=int(input())
e=[]
for _ in range[n]:
e.append(input())
user= e.split("@")[0]
print(user)
'''
'''
l = list(map(lambda x:x.split("@")[0], s))
l = list(filter(lambda x: x > 10 and x < 80, l))
'''
#print(s)
ptrn = re.compile("^[a-zA-Z][\w-]*@[a-zA-Z0-9]+\.[a-zA-Z]{1,3}$")
result = ptrn.match(s)
#l = list(filter(lambda x:x.match(ptrn) , s))
return result
In our experience, we suggest you solve this Validating Email Addresses With a Filter Hacker Rank Solution and gain some new skills from Professionals completely free and we assure you will be worth it.
Validating Email Addresses With a Filter is available on Hacker Rank for Free, if you are stuck anywhere between compilation, just visit Queslers to get all Hacker Rank Solution
I hope this Validating Email Addresses With a Filter Hacker Rank Solution would be useful for you to learn something new from this problem. If it helped you then don’t forget to bookmark our site for more Hacker Rank, Leetcode, Codechef, Codeforce Solution.
This Problem is intended for audiences of all experiences who are interested in learning about Data Science in a business context; there are no prerequisites.
Keep Learning!
More Hacker Rank Problem & Solutions >>
Mini-Max Sum Hacker Rank Solution
String Validators Hacker Rank Solution
Text Alignment Hacker Rank solution