파이썬2021. 6. 14. 09:54
728x90

[ 코드 ]

import re
# 패턴 넣으면 정규표현식 이용해서 해당하는 것 리스트로 리턴(find)
def match_dna_list(pattern_s, content_s):
    pattern_s_r = pattern_s.replace('_', '.')
    # pattern_s_r='(?=(.A....))'
    pattern_s_r = '(?=(' + pattern_s_r + '))'
    find = re.findall(pattern_s_r,content_s)

    #print(find)
    return find


with open ('3.inp','r') as f:
    #.strip()을 해줘야 \n 이 없어짐
    # \n 이 있으면 완전 다른 문자가 되기 때문에 findall()하면 안 나옴
    pattern = f.readline().strip()

    # 나머지부분 읽음
    dna_seq=''
    for i in f:
        dna_seq += i.strip()

    with open('dna.out', 'w') as f2:
        # find 안에 값이 있다면
        if ( match_dna_list(pattern,dna_seq) ):
            f2.write('\n'.join(match_dna_list(pattern,dna_seq)))
        else:
            f2.write('No')

 

 

[ 결과 ]

3.inp

_A____
CCCCCCCCCCCCCAAAATTTTTTTTGGGGGGGGGAAATTT

 

dna.out

 

----------------------------

 

* 정규표현식에서 모든 문자는 . 이다.

pattern_s_r = pattern_s.replace('_', '.')

 

* 겹치는 문자를 찾는 방법은 다음과 같다.

(?=( 패턴 )) 형식으로 만든 후 findall에 넣어준다.

pattern_s_r = '(?=(' + pattern_s_r + '))'
find = re.findall(pattern_s_r,content_s)

 

 

* 리스트로 return된 값을 '\n' 기준으로 출력하는 방법.

단, 마지막은 \n 없이 출력한다.

'\n'.join(출력원하는리스트)

print('\n'.join(match_dna_list(pattern,dna_seq)))

 

이때, 정수 리스트인 경우는 다음과 같이 map으로 str로 변경해준다.

list1=[1,2,3]
print('\n'.join(map(str,list1)))

 

 

반응형
Posted by mminky
파이썬2021. 4. 2. 12:45
728x90

[ 문제 ]

다음의 파일의 내용을 띄어쓰기를 기준으로 읽어들인 후

리스트에 저장해서 정렬 후

각 값을 a, b, c에 저장하고자 한다.

2.inp 내용

 

[ 주요 요점 ]

 

* 문자열.split()을 하면 파이썬에서는 리스트로 변환된다.

 

with open('2.inp','r') as f:
    f_line=f.readline() #파일 한 줄 읽어오기
    f_list=f_line.split() #그 줄을 list에 저장
    print(f_list)

 

문자열 리스트로 출력됨

 

 

* 문자열 리스트(f_list) 를 정수 리스트로 변환

f_list=list(map(int,f_list))
print(f_list)

 

정수 리스트로 출력됨

 

 

* 리스트 정렬

f_list.sort()
print(f_list)

 

정렬 된 정수 리스트로 출력됨

 

 


[ 전체 코드 ]

with open('2.inp','r') as f:
    f_line=f.readline() #파일 한 줄 읽어오기
    f_list=f_line.split() #그 줄을 list에 저장

    #정수list로 변환
    f_list=list(map(int,f_list))

    #a<b<c 정렬
    f_list.sort()

	#a,b,c에 각 값을 저장
    a= f_list[0]
    b= f_list[1]
    c= f_list[2]
    
    #결과 출력
    print(str(a)+' '+str(b)+' '+str(c))

 

[ 결과 ]

출력이 잘 되었다 :)

 

 

반응형
Posted by mminky