如何将一串电子邮件地址排序到列表中

时间:2014-01-28 09:58:47

标签: python string sorting

我想将包含电子邮件地址的字符串排序到电子邮件地址列表。 代码卡住了,没有任何反应。

unsorted = "sge@grg.lt ggrge@yahoo.com"
def sort_thatstring():
    s = ""
    out = []
    for x in unsorted:
        s = ""
        while x != " ":
            s+=str(x)
        else:
            out.append(s)
sort_thatstring()
print out

我想得到:

out = ["sge@grg.lt", "ggrge@yahoo.com"]

2 个答案:

答案 0 :(得分:3)

你可以这样做:

sorted_list = sorted(unsorted.split(), key=lambda x: x.split('@')[1])

print(sorted_list)
#['sge@grg.lt', 'ggrge@yahoo.com']

答案 1 :(得分:2)

您的代码有两个问题:

每次循环for循环都会重置s,导致您丢失已读取的数据。

while语句也构造了一个循环,但是你像if一样使用它。尝试使用if替换,并阅读条件和循环构造函数之间的差异。

你的函数也需要返回out数组,否则它会在你的函数到达结束时被销毁。