파이썬. 한 서열의 문자열이 다른 서열에도 포함되는지 알아보기.
조회수 651회
- 제가 seq2 라고 지정해놓은 서열을 3개씩 슬라이싱을 해야 하는데(이 서열이 seq1보다 길어서입니다.) index 번호가 (0,1,2),(3,4,5)... 이렇게가 아니라 (0,1,2), (1,2,3),(2,3,4) 이렇게 잘라야 합니다. 그 방법을 구체적으로 알려주세요.
- 이렇게 3개씩 나눴다면 이 문자열이 그대로 seq1 에 있는지 없는지를 확인해야 합니다. seq2에서 마지막 문자열까지 확인을 해야 하는데, 이 방법을 구체적으로 알려주세요.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
안녕하세요
for i in range(len(seq2)):# seq2의 길이를 얻어와 길이만큼 for문을 반복합니다 if (i+2 < len(seq2)): # 길이가 4인 문자열에 i+2면 index가 5가 되는경우를 막기위해.. word = seq2[i] + seq2[i+1] + seq2[i+2] # 단어를 만들어줍니다 if word in seq2 : # word란 단어가 seq2 문자열에 있는지 확인! print('Success:', word)
이렇게 3개씩 찾아냅니다~
for i in range(len(seq2)): if (i+2 < len(seq2)): word = seq2[i] + seq2[i+1] + seq2[i+2] print(word)
있는지 없는지만 확인하면 된다면, if in 문법을 사용하시면 됩니다.
(추가1)
for i in range(len(seq2)): if (i+2 < len(seq2)): word = seq2[i] + seq2[i+1] + seq2[i+2] print(word) index = seq1.find(word) if index != -1 : print(f'찾으시는 단어{word}는 [{index}:{index+len(word)-1}] 에 있어요')
(추가2)
사실.. LEA, PGV, DLK .. 같이 2개 씩 나오는 단어도 있습니다.. 그러면 정규식을 써야하는데 참고만 해주세요
import re for i in range(len(seq2)): if (i+2 < len(seq2)): word = seq2[i] + seq2[i+1] + seq2[i+2] index = seq1.find(word) if index != -1: indexes = [w.start() for w in re.finditer(word, seq1)] print(f'찾으시는 단어{word}는 {indexes} 에..')
- 수정해봤는데 괜찮나요? 최진우 2019.6.5 11:28
- print('Success:', word) 이거는 단순히 화면에 출력하는 거예요. word는 그위에서 만든 단어입니다 print('Success:', word) 는 없어도됩니다^^ 최진우 2019.6.5 11:52
- if index != -1 은 찾는 단어가 없으면.. -find()함수가 -1을 반환하거든요.. 그래서 '찾는 단어가 있을때!'를 의미합니다 최진우 2019.6.5 11:53
- 출력을 할때 seq1[79:81] 이렇게 하셨잖아요? 82로 해보세용 최진우 2019.6.5 11:54
- -1을 빼주시면 원하시는대로 출력이 될겁니다^^ 최진우 2019.6.5 12:07
- 우와!!! 정말정말 감사드립니당^^ 알 수 없는 사용자 2019.6.5 12:33
- 아 전문가님!! 혹시 python idle 3.7 이 결과를 캡쳐 어떻게 하나요? velbi님께서 제게 답변주신 것처럼 색깔 구분이 다 나오게 한글파일로 옮겨가고 싶은데 그게 안되요 ㅠㅠ 알 수 없는 사용자 2019.6.5 15:16
- 구건 그냥 답변헐때 위에 코드태크<> 눌러서 그안에 작성하면 됩니다! 최진우 2019.6.5 19:19
댓글 입력