단어 뒤에 세미콜론이 있는지 확인하려고합니다. 나는 긴 문자열 안에 단어의 위치를 가지고 있으며, 위치가 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
세미콜론되지 않았는지 확인
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
구조가 평평이며이 있는지 확인하기 위해를 방지하기 위해 약간의 트릭을 할해야 쉽게 읽을 수 있지만, 예외 사용을 남용하는 느낌이 들었습니다.
파이썬 사용자는 무엇을 말합니까? 사전에 감사합니다.
#considering mylongstring contains the word
#+1 for the possible colon
mylongstring[:pos_word + len(word) + 1].endswith(':')
또는 긴 문자열이 매우 긴 경우, 당신은 너무 많이 복사하지 않습니다 :
mylongstring[pos_word:pos_word + len(word) + 1][-1] == ':'
나는 덧글을 달았습니다. 나는 나 자신도 편집하고 있었다. 죄송합니다! – bgusach
endswith (':')? – daveoncode
나에게는 매우 파이썬 적으로 보입니다. 코드 리뷰에서 이것을 묻는 것을 고려해보십시오. 중요한 것은 의도가 무엇인지 명확하게하는 것이므로'colon_follows_word' 함수로 그것을 감쌀 수 있습니다. –