site
일부 문자의 위치를 나타내는 변수 를 기반으로 특정 문자열을 추출하려는 텍스트 파일이 있습니다 . 위치 앞뒤에 20자를 추출하고 싶습니다 site
. 내 코드는의 값이 site
20 이상 이면 완벽하게 작동합니다 .하지만 이전에 20 자 미만이면 site
아무 것도 반환하지 않습니다.
예를 들어 여기에 문자열 site=5
이 있는데이 경우에는 K
.
MSGRGKGGKGLGKGGAKRHRKVLRDXYZX
이제 문자 앞뒤에 20 개의 문자를 추출하려고합니다 K
. 아래는 내 코드입니다.
data=myfile.read()
str1 = data[site:site+1+20]
temp = data[site-20:site]
final_sequence = temp+str1
print final_sequence
이것은 나에게 출력을 제공합니다 KGGKGLGKGGAKRHRKVLRDX
. 이전 K
에는 20자를 찾을 수 없었기 때문에 이전 에는 chaarcters를 인쇄하지 않았습니다 K
.
정확해야합니다 MSGRGKGGKGLGKGGAKRHRKVLRDX
.
제 질문에 이르게됩니다. K
값의 다운 스트림이 20 자 미만인 경우 이전에 모든 문자를 인쇄하도록 코드를 수정하려면 어떻게해야 K
합니까? 감사합니다.
문제는 site-20
파이썬이 음수이므로 시퀀스의 끝에 상대적인 인덱스로 간주하므로 슬라이스가 비어 있다는 것입니다 (첫 번째 인덱스가 마지막 인덱스에 뒤 따르기 때문). 0 이하로 떨어지지 않도록하십시오.
data=myfile.read()
str1 = data[site:site+1+20]
temp = data[max(site-20, 0):site]
final_sequence = temp+str1
print final_sequence
또는 더 짧게
data=myfile.read()
final_sequence = data[max(site-20, 0):site+1+20]
print final_sequence
min(site+1+20, len(data))
Python은 시퀀스 끝을 넘어서 시퀀스 길이까지 슬라이스 인덱스를 자동으로 클리핑하므로 상한값 을 사용할 필요가 없습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다