Python:在字符串上使用split并返回元组?
假设我做了以下操作:
>>> 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!"