我試圖檢查一個單詞是否有尾隨分號。我有一個長字符串中的單詞的位置,我想檢查位置start of word + length of word
上的字符是否爲:
。它可以是單詞是字符串中的最後一個字,因此試圖讓下一個字符將引發IndexException
使用assert控制流程
我有三個想法:
1)檢查,我們是沒底的字符串,然後檢查其沒有分號
semicolon_pos = pos_word + len(word) # Possible position
if semicolon_pos < len(long_string) and long_string[semicolon_pos] == ':':
# do something...
else:
# do something else
不是它通常被認爲是Python的
2)嘗試 - 除了分號前牽引和分號
semicolon_pos = pos_word + len(word) # Possible position
try:
if long_string[semicolon_pos] == ':':
# Do something
else:
# do something else (which is the same as in the except clause)
except IndexError:
# do something else
平等看起來有點有點不可思議,提取,然後嵌套。我必須做一個小動作,以避免重複代碼
3)嘗試 - 除了分號提取和斷言,以確保它是一個分號
semicolon_pos = pos_word + len(word) # Possible position
try:
assert long_string[semicolon_pos] == ':'
# do something
except (IndexError, AssertionError):
# do something else
結構扁平化,這是容易閱讀,但我有一種濫用異常使用的感覺。
python的人說什麼? 在此先感謝。
我想我覆蓋了一條評論。我也在編輯自己。抱歉! – bgusach
endswith(':')? – daveoncode
對我來說看起來相當pythonic。您可以考慮在代碼審查中詢問這一點。重要的是要清楚你的意圖是什麼,所以你可能想把它包裝在一個函數'colon_follows_word'中。 –