在這裏,我有一個更大的程序的一部分,我正在努力。該功能正在查看一些輸入電子郵件並按字母順序排列。有沒有一種方法可以讓它只查看@domain之前的部分?目前我認爲它正在查看整個輸入電子郵件字符串。閱讀字符串的一部分
def __lt__(self, other):
if (self.email < other.email):
return True
else:
return False
在這裏,我有一個更大的程序的一部分,我正在努力。該功能正在查看一些輸入電子郵件並按字母順序排列。有沒有一種方法可以讓它只查看@domain之前的部分?目前我認爲它正在查看整個輸入電子郵件字符串。閱讀字符串的一部分
def __lt__(self, other):
if (self.email < other.email):
return True
else:
return False
是:
def __lt__(self, other):
return self.email[:self.email.index('@')] < other.email[:other.email.index('@')]
給出總有email
一個'@'
。
在這裏,我們切片工作:我們確定其中'@'
符號放置.index('@')
指數,我們用[:...]
切片達(但不包括)的'@'
標誌。所以:
>>> email='[email protected]'
>>> email[:email.index('@')]
'foo'
然後我們簡單地計算是否「我們的」 '@'
號前部分小於一部分的other
的'@'
跡象。
只是爲了我自己的知識,它會被普遍接受的編碼習慣使用像這樣的切片符號,而不是像'self.email.split('@')[0]'這樣的字符串分割嗎?他們應該在這種情況下產生相同的結果,但它們可能是一些特殊情況,其中一種方法比另一種我不知道的更好。 – tmwilson26
@ tmwilson26:如果字符串沒有**不包含「@」,則分割將仍然有效,而分割將失敗。所以呀'分裂'可以更好。此外,由於您計算了所有拆分元素,而不僅僅是第一個(您實際上感興趣),所以拆分(可以)在計算上更加昂貴。 –
瞭解了這一點,明確了利用切片的好處。 – tmwilson26
你有嘗試過什麼嗎?我會建議研究字符串拆分。 –