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

joh*_*ohn 8 python

说我做以下事情:

>>> a = foo@bar.com
>>> uname, domain = a.split('@')
Run Code Online (Sandbox Code Playgroud)

但是,如果我只想要域名,并且永远不会un?例如,如果我只想要uname而不是域名,我可以这样做:

>>> uname, = a.split('@')
Run Code Online (Sandbox Code Playgroud)

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

jos*_*gle 13

要考虑其他一些答案,您有以下选择:

如果你知道字符串中有一个"@"符号,那么你可以简单地执行以下操作:

>>> domain = a.split('@')[1]
Run Code Online (Sandbox Code Playgroud)

如果您有可能没有"@"符号,则建议使用以下其中一项:

>>> domain = a.partition('@')[2]
Run Code Online (Sandbox Code Playgroud)

要么

try:
    domain = a.split('@')[1]
except IndexError:
    print "Oops! No @ symbols exist!"
Run Code Online (Sandbox Code Playgroud)


Joã*_*ves 6

可以使用自己的编码样式并指定类似"使用'_'的内容,因为它不关心您想要忽略其值的变量".这是Erlang等其他语言的一般做法.

然后,你可以这样做:

uname, _ = a.split('@')
Run Code Online (Sandbox Code Playgroud)

根据您设定的规则,_变量中的值将被忽略.只要你始终如一地应用规则,你应该没问题.