说我做了以下事情:
>>> a = foo@bar.com
>>> uname, domain = a.split('@')
但是,如果我只想要域名,并且永远不会取消注册,该怎么办?例如,如果我只想要uname而不是域名,我可以这样做:
>>> uname, = a.split('@')
有没有更好的方法将一个元组拆分成一个元组并让它丢掉?
答案 0 :(得分:13)
要考虑其他一些答案,您有以下选择:
如果你知道字符串中有一个'@'符号,那么你可以简单地执行以下操作:
>>> domain = a.split('@')[1]
如果您有可能没有'@'符号,则建议使用以下其中一项:
>>> domain = a.partition('@')[2]
或者
try:
domain = a.split('@')[1]
except IndexError:
print "Oops! No @ symbols exist!"
答案 1 :(得分:6)
这是Erlang等其他语言的一般做法。
然后,您可以这样做:
uname, _ = a.split('@')
根据您设定的规则,_变量中的值将被忽略。只要你始终如一地应用规则,你应该没问题。
答案 2 :(得分:4)
如果您知道,您的字符串中始终有@
,那么domain = a.split('@')[1]
就是您的选择。否则先检查一下,或者添加一个try..except IndexError
块。
答案 3 :(得分:4)
如果没有@:
,这会给你一个空字符串 >>> domain = a.partition('@')[2]
如果你想在没有@时取回原来的字符串,请使用:
>>> domain = a.rpartition('@')[2]
答案 4 :(得分:2)
这可行:
domain = a[a.index("@") + 1:]