2011-04-21 11 views

Odpowiedz

13

W celu uwzględnienia niektórych innych odpowiedzi, masz następujące opcje:

Jeśli wiesz, że ciąg będzie miał symbol „@” w to wtedy można po prostu wykonaj następujące czynności:

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

Jeśli jest szansa, że ​​nie ma symbolu „@”, a następnie jedną z następujących czynności sugeruje:

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

Albo

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

Jest powód, dlaczego rozłam i partycja istnieje. Czasami należy używać podziału, ale nie jest to jeden z tych czasów. –

+0

Czy możesz wyjaśnić, kiedy używać podziału i kiedy używać partycji? – john

4

Jeśli wiesz zawsze jest @ w swoim ciągiem, domain = a.split('@')[1] jest droga. W przeciwnym razie sprawdź najpierw lub dodaj blok try..except IndexError.

+1

Możesz również rozważyć "domain = a.partition (" @ ") [2]'. Spowoduje to ustawienie 'domain' na' '' 'jeśli nie ma żadnego' @ 'w łańcuchu, a także będzie się dzielić tylko na pierwszym' @ 'jeśli jest ich więcej. –

2

To może działać:

domain = a[a.index("@") + 1:] 
6

Ty mógłby używać własnego stylu kodowania i określić coś jak „użytkowania«_»jako nie obchodzi dla zmiennych, których wartość chcesz zignorować”. Jest to ogólna praktyka w innych językach, takich jak Erlang.

Następnie można po prostu zrobić:

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

i zgodnie z regułami określonymi wartość w zmiennej _ ma być ignorowany. Dopóki konsekwentnie stosujesz regułę, powinieneś być w porządku.

+0

To użycie '_' jest całkiem dobrze ugruntowane, patrz [Jaki jest cel pojedynczej zmiennej podkreślenia" _ "w Pythonie?] (Http://stackoverflow.com/q/5893163/699305). – alexis

4

Daje to pusty ciąg jeśli nie ma @:

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

Jeśli chcesz uzyskać oryginalny łańcuch z powrotem, gdy nie ma @, użyj tego:

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