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

9 投票
5 回答
18120 浏览
提问于 2025-04-16 16:10

假设我做了以下操作:

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

但是如果我只想要域名,而不想要用户名呢?比如说,如果我只想要用户名,而不想要域名,我可以这样做:

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

有没有更好的方法可以把它分成一个元组,并且把用户名丢掉呢?

5 个回答

4

如果你确定你的字符串里总是有一个@符号,那么可以用domain = a.split('@')[1]这个方法来获取它后面的部分。否则,最好先检查一下是否有这个符号,或者在这段代码周围加上一个try..except IndexError的块,以防出错。

6

你可以使用自己的编码风格,指定一些规则,比如“用'_'来表示那些你想忽略的变量”。这种做法在其他编程语言中,比如Erlang,是很常见的。

然后,你可以这样写:

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

根据你设定的规则,'_'这个变量的值会被忽略。只要你始终如一地遵循这个规则,就没问题了。

13

为了考虑到其他一些回答,你有以下几种选择:

如果你确定这个字符串里会有一个'@'符号,那么你可以直接这样做:

>>> domain = a.split('@')[1]

如果有可能这个字符串里没有'@'符号,那么建议你使用以下其中一种方法:

>>> domain = a.partition('@')[2]

或者

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

撰写回答