首页 > 解决方案 > 元组解包到多个列表中

问题描述

我有以下长字符串:

emails = '''
CoreyMSchafer@gmail.com
corey.schafer@university.edu
corey-321-schafer@my-work.net
'''

从这个字符串中,使用正则表达式,我想将本地部分、域和主域提取到三个列表中

使用以下代码:

pat = re.compile(r'([a-zA-Z0-9.-]*)(@[a-z-]+)(.\w+)')
matches = pat.findall(emails)

我得到了以下列表,其中包含个人元组:

[('CoreyMSchafer', '@gmail', '.com'), ('corey.schafer', '@university', '.edu'), ('corey-321-schafer', '@my-work', '.net')]

如果我然后解包元组:

local_part, domains, main_domains = zip(*matches)

我将得到三个元组,其中各个元素分开,如下所示:

('CoreyMSchafer', 'corey.schafer', 'corey-321-schafer') # local parts
('@gmail', '@university', '@my-work') # domains
('.com', '.edu', '.net') # main domains

尽管如此,我想要三个列表而不是三个元组。

我尝试了以下方法:

a,b,c = map(list,zip(*matches))

但随后我收到以下错误消息:

TypeError                                 Traceback (most recent call last)
<ipython-input-224-73e06f3c6d27> in <module>()
----> 1 a,b,c = map(list,zip(*matches))

TypeError: 'list' object is not callable

标签: python-3.xlisttuples

解决方案


推荐阅读