2024-09-26 18:12:35 发布
网友
例如,电子邮件中都有“@”符号
lst = ["johndoe@example.com","doejohn@email.com","maryjane@domain.com"]
当“@”之后的所有文本的字符数不同时,如何替换它们?我的目标是得到一个新的列表,例如:
newlist = ["johndoe@changed.com", "doejohn@changed.com", "maryjane@changed.com"]
lst = ["johndoe@example.com", "doejohn@email.com", "maryjane@domain.com"] out = [i.split("@")[0] + "@changed.com" if "@" in i else i for i in lst] print(out)
印刷品:
['johndoe@changed.com', 'doejohn@changed.com', 'maryjane@changed.com']
注意:对于更高级的用例,我建议查看^{}模块
选项1:使用正则表达式。它们使用re库
选项2:通过在列表中循环并将字符串拆分为一个域和信息部分,然后将域设置为“changed.com”,以更符合pythonic的方式进行操作。像这样:
emails = ["aperson@email.com", "another@example.org", "onemore@something.net"] new = [email.split("@")[0]+"@newone.com" for email in emails]
这使用了一种叫做列表理解的东西,这是一种非常好的python特性。它创建了一个名为new的列表,其中存储了email中以域结尾的每个项
new
email
您可以创建如下函数:
def new_domain(emails,domain): return [email.split("@")[0]+"@"+domain for email in emails]
这意味着您可以在任何时候使用它来更改电子邮件列表的结尾:
>>> emails = ["johndoe@example.com","doejohn@email.com","maryjane@domain.com"] >>> new_domain(emails,"changed.com") ["johndoe@changed.com", "doejohn@changed.com", "maryjane@changed.com"]
您可以使用.split(),它将返回符号任一侧的字符串数组
.split()
list = ["johndoe@example.com","doejohn@email.com","maryjane@domain.com"] split_list = [] for email in list: split_email = email.split("@") split_list.append(split_email[0] + "@changed.com") print(split_list)
印刷品:
注意:对于更高级的用例,我建议查看^{} 模块
选项1:使用正则表达式。它们使用re库
选项2:通过在列表中循环并将字符串拆分为一个域和信息部分,然后将域设置为“changed.com”,以更符合pythonic的方式进行操作。像这样:
这使用了一种叫做列表理解的东西,这是一种非常好的python特性。它创建了一个名为
new
的列表,其中存储了email
中以域结尾的每个项您可以创建如下函数:
这意味着您可以在任何时候使用它来更改电子邮件列表的结尾:
您可以使用
.split()
,它将返回符号任一侧的字符串数组相关问题 更多 >
编程相关推荐