Python 2.7报错:仅能拼接列表与列表,无法拼接列表与字符串
解决Python 2.7中提取保存邮箱时的"Can only concatenate list (not 'str') to list"报错
嘿,这个报错我太熟了!本质上就是你在代码里犯了个小疏忽——试图把列表和字符串直接做拼接操作,Python可不允许这种跨类型的组合哦~
常见出错场景&错误代码示例
比如你提取到单个邮箱字符串后,想把它加到存储邮箱的列表里,不小心写成了这样:
emails_list = [] extracted_email = "user@example.com" # 错误:用+把列表和字符串拼接 emails_list = emails_list + extracted_email
运行这段代码就会触发那个报错,因为+运算符在处理列表时,要求两边都是列表类型,而你右边是个字符串。
正确的处理方式
针对不同情况,有两种常用的解决办法:
- 添加单个邮箱字符串:用列表的
append()方法,把字符串追加到列表末尾emails_list = [] extracted_email = "user@example.com" emails_list.append(extracted_email) - 批量添加多个邮箱(列表形式):如果是用正则
re.findall()提取到的邮箱列表,可以用extend()方法或者+=运算符(两边都是列表才行)import re # 从文本中批量提取邮箱 text_content = "咨询邮箱:support@test.com,售后邮箱:service@demo.org" found_emails = re.findall(r'[\w\.-]+@[\w\.-]+', text_content) emails_list = [] # 方式1:用extend添加整个列表 emails_list.extend(found_emails) # 方式2:用+=拼接两个列表 emails_list += found_emails
最后保存邮箱到文件的示例
搞定提取和列表存储后,把邮箱写入文件也很简单:
with open("saved_emails.txt", "w") as file: for email in emails_list: file.write(email + "\n") # 每个邮箱占一行
内容的提问来源于stack exchange,提问作者updoes
相关产品推荐
相关产品推荐

