python - 如何删除作为 Python 列表元素的字符串的一些前导字符?
问题描述
我从我的一位同事那里得到了一个电子邮件地址列表,例如 -
listNew = ['john.smith@hotmail.com', 'Tom White <tom.white@gmail.com', '<connie.green@yahoo.com']
请问如何使用 Python 删除列表的某个地址元素中的“ <
”和“”之前的所有字符?<
解决方案
打电话.split()
并参加最后一部分!
作为列表理解
[value.split("<")[-1] for value in original_values]
如果您想要任何可用的名称和地址,请使用专用库,它还可以处理围绕电子邮件地址有效性的麻烦边缘
https://docs.python.org/3/library/email.utils.html#email.utils .parseaddr
>>> from email.utils import parseaddr
>>> parseaddr("foo <bar.baz@example.com") # easily handles missing '>'
('foo', 'bar.baz@example.com')
全部一起
from email.utils import parseaddr
def parse_emails_to_pairs(emails_list):
for email_str in emails_list:
name, email = parseaddr(email_str)
if not email:
raise ValueError(f"couldn't parse email {email_str}")
yield (name or None, email)
>>> list(parse_emails_to_pairs(['john.smith@hotmail.com', 'Tom White <tom.white@gmail.com', '<connie.green@yahoo.com']))
[(None, 'john.smith@hotmail.com'), ('Tom White', 'tom.white@gmail.com'), (None, 'connie.green@yahoo.com')]
还要注意,按字面意思命名您的列表list
是不好的做法,因为它会破坏list()
并可能使该范围内的未来读者感到困惑!(尽管对您的情况可能无关紧要)
推荐阅读
- java - 为什么我的确定按钮的警报对话框仍然可以单击,如果数据库中没有帐户,我已经添加了 if else 登录语句仍然可以单击按钮确定?
- vba - CDO.Message 不发送电子邮件
- c++ - 如何递归地将参数绑定到函数?
- python - python 中的 elasticsearch-dsl 库在使用 search.from_dict() 方法从字典语法构造查询时给出双重结果
- css - 仅在移动设备上 vuejs + vuetify 应用程序底部的偏移量
- c - 这提出了分段错误(核心转储)
- elasticsearch - 如果批量请求包含两次具有不同属性的相同文档,弹性搜索可以拒绝请求吗?
- javascript - NodeJs - TypeError:Post 不是构造函数
- web-scraping - 想了解 Robots.txt
- angular - 无法使用 ngModel 获取复选框的值