티스토리 뷰

728x90

파이썬으로 어절수 조건에 맞는 경우만 출력하는 경우를 포스팅하려합니다.

제가 풀다가 이것도 도저히 못 풀겠어서 헤맸네요...
알고리즘 열심히 풀어야겠습니다...

 

매번 뭘 써야겠다는 아는데 퍼즐이 맞춰지지 않는 느낌... 정말 화나네요 ^^;;

 


조건: 30어절 이하 10어절 이상일 경우만 출력하기 '

 

 

 

- 출력하고자 하는 리스트

 

sent_tokens = ['이처럼 대외적 위기에',' 따라 군무는 격상되었고', '정부는 군사우위정책을 본격적으로 시행하였다.1900년 6월 의화단진압 전쟁이 시작되었고', '인접국의 전쟁 상황은 국경에서의 문제를 수반하였다.', '대한제국은 난민문제 및 청비의 침략 등을 막기 위해 평안・함경도에 진위대를 증설했고타 지역으로부터 지원 병력을 차출하여 배치하기도 하였다.', '이로써 대한제국의 국경방어는 주요거점들이 주밀하게 연결된 ‘선형방어’로 전환되었으며 방어태세는 강화되었다.', '이후 1900년 8월15일 연합국의 북경점령으로 의화단진압전쟁이 사실상 종결되었음에도 러시아군은 잔존한 청비 진압을 명분으로 한반도 진출을시도하였다.']

 

 

- 이런식으로 나오겠죠

 

 

- 함수

def sentence_check_word_count(sent_tokens): # 전체 어절수 찾기
    count_word_len = []
    for sent_token in sent_tokens:
        count_word_len.append(len(sent_token.split()))
    return count_word_len

해석:

- sent_tokens로 입력 받은 리스트를 sent_token 스트링으로 푼다.

- split()과 len()을 이용하여  어절 단위로 나눠줌과 길이를 구하고 

- append()를 사용하여 count_word_len에 담는다.

 

 

 

-함수 호출과 결과물 

함수호출

 

- 30어절 이하 10어절 이상일 경우 출력문 분석

test = []
for idx in range(len(count_lists)):
    if 30 >= count_lists[idx] >= 10:
        test.append(sent_tokens[idx])

여기서는 len과 range를 사용합니다.

어절의 길이를 구한 count_lists의 리스트를  len을 사용하여 길이를 구하고 (7, 한 개 생성 )

range는 시작, 종료숫자, stept순으로 0~7까지의 숫자를 구할때 사용합니다. (1~7, 7개 생성)

idx의 값

키: count_lists[idx]

count_lists의

 

1번 인덱스의 값 3 

2번 인덱스의 값 3

3번 인덱스의 값 8

.

.

.

이렇게 시작하는데 

count_lists의 [] 인덱스를 idx를 넣어줌으로써 

1번 인덱스

2번 인덱스

3번 인덱스

를 참조할 수 있다.

    if 30 >= count_lists[idx] >= 10:

 

조건문에 일치하는 것의 값을 담아야한다.

 

test = [] 빈 배열을 생성하고

send_tokens의 idx를 넣어주면서 

 

17

10

15

 

출력할 수 있게 된다.

 

 

결과

 

 

728x90
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday