Python:在字符串上使用split并返回元组?

时间:2011-04-21 10:07:30

标签: python

说我做了以下事情:

>>> a = foo@bar.com
>>> uname, domain = a.split('@')

但是,如果我只想要域名,并且永远不会取消注册,该怎么办?例如,如果我只想要uname而不是域名,我可以这样做:

>>> uname, = a.split('@')

有没有更好的方法将一个元组拆分成一个元组并让它丢掉?

5 个答案:

答案 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:]