使用 .rstrip("@") 从 Python 列表中删除电子邮件地址
Remove email addresses from Python list using .rstrip("@")
我有一个电子邮件地址列表,我想删除“@”之后的所有内容。到目前为止,我的代码如下所示:
user_emails = ['me@organization.org', 'you@organization.org', name@organization.org']
emails = [user.rstrip("@") for user in user_emails]
但是当我 运行 这段代码时没有任何变化。当我 运行:
emails = [user.strip("@organization.org") for user in user_emails]
@ 被删除了,但是它左边的字符也被删除了,这对我不利。
我应该做些什么来删除这个角色?
感谢您的任何见解。
您只需要在 '@'
上拆分并参加第一部分:
user_emails = ['me@organization.org', 'you@organization.org', 'name@organization.org']
emails = [user.split("@")[0] for user in user_emails]
如果你真的想使用.rstrip()
,你可以这样做:
emails = [user.rstrip("@organization.org") for user in user_emails]
此处使用 .rstrip()
时要小心。 'foo@organization.org'.rstrip("@organization.org")
之类的东西会产生不同的答案。
.rstrip()
从右端删除字符。
例如:
>>> 'asd@'.rstrip('@')
asd
>>> 'asd@a'.rstrip('@')
asd@a
rstrip
只去除尾随字符,参见 reference here。参数是要剥离的字符。
当您执行 user.rstrip("@")
时,不会发生任何事情,因为 @
不在 user
的末尾,即它不在尾部
rstrip("@")
不起作用,因为字符串右侧没有 @
。
当用户名部分末尾有 O、R、G、A、N、I、Z、T、O 或 N 时,rstrip("@organization.org")
删除超过 @organization.org
电子邮件地址。请记住,rstrip()
(及其表兄弟)删除列出的字符中的 任何,而不是您提供的字符串。
一个常见的解决方案是在 @
符号上拆分并获取返回列表的第一项。
addresses = [addr.split("@", 1)[0] for addr in user_addresses]
(命名很重要。我使用 user_addresses
而不是 user_email
因为你没有用户的电子邮件,你有他们的电子邮件 地址。 )
常见的解决方案确实为每个处理的地址创建一个(小的)临时列表。此内存几乎立即被下一次迭代重用,因此不太可能产生任何严重的不利影响。尽管如此,如果您想避免创建不需要的列表,您可以使用 str.find()
找到 @
并切掉域部分。
addresses = [addr[:addr.find("@")] for addr in user_addresses]
我有一个电子邮件地址列表,我想删除“@”之后的所有内容。到目前为止,我的代码如下所示:
user_emails = ['me@organization.org', 'you@organization.org', name@organization.org']
emails = [user.rstrip("@") for user in user_emails]
但是当我 运行 这段代码时没有任何变化。当我 运行:
emails = [user.strip("@organization.org") for user in user_emails]
@ 被删除了,但是它左边的字符也被删除了,这对我不利。
我应该做些什么来删除这个角色?
感谢您的任何见解。
您只需要在 '@'
上拆分并参加第一部分:
user_emails = ['me@organization.org', 'you@organization.org', 'name@organization.org']
emails = [user.split("@")[0] for user in user_emails]
如果你真的想使用.rstrip()
,你可以这样做:
emails = [user.rstrip("@organization.org") for user in user_emails]
此处使用 .rstrip()
时要小心。 'foo@organization.org'.rstrip("@organization.org")
之类的东西会产生不同的答案。
.rstrip()
从右端删除字符。
例如:
>>> 'asd@'.rstrip('@')
asd
>>> 'asd@a'.rstrip('@')
asd@a
rstrip
只去除尾随字符,参见 reference here。参数是要剥离的字符。
当您执行 user.rstrip("@")
时,不会发生任何事情,因为 @
不在 user
的末尾,即它不在尾部
rstrip("@")
不起作用,因为字符串右侧没有 @
。
rstrip("@organization.org")
删除超过 @organization.org
电子邮件地址。请记住,rstrip()
(及其表兄弟)删除列出的字符中的 任何,而不是您提供的字符串。
一个常见的解决方案是在 @
符号上拆分并获取返回列表的第一项。
addresses = [addr.split("@", 1)[0] for addr in user_addresses]
(命名很重要。我使用 user_addresses
而不是 user_email
因为你没有用户的电子邮件,你有他们的电子邮件 地址。 )
常见的解决方案确实为每个处理的地址创建一个(小的)临时列表。此内存几乎立即被下一次迭代重用,因此不太可能产生任何严重的不利影响。尽管如此,如果您想避免创建不需要的列表,您可以使用 str.find()
找到 @
并切掉域部分。
addresses = [addr[:addr.find("@")] for addr in user_addresses]