파이썬 문자열 리스트에서 특정 단어 수를 세는 방법
조회수 7252회
"주택의 주택이 주택을 했다.", "주택주택이 주택주택한건데 문제라도?", "저 주택은 해로운 주택이다."
여기서 주택이라는 글자의 수를 세야하는데 총 9개거든요
i = 0
Str = "주택의 주택이 주택을 했다.", "주택주택이 주택주택한건데 문제라도?", "저 주택은 해로운 주택이다."
for a in Str:
if "주택" in a:
i = i + 1
print(i)
이렇게 하니까
그냥 주택이 들어가는 요소의 개수만 세서 3개밖에 안 나오더라고요
혹시 특정 문자의 개수를 세는 방법은 없을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
어려울것은 없습니다만 빨리 가는 방법이 있으면 그것을 사용하면 그만인겁니다.
바퀴를 또 만들필요는 없죠
그런데 join, count 이런거 안쓰고 원하는 것 보면 str.find 이나 정규식도 쓰면 안된다 할 것 같습니다. 즉 자료구조나 알고리즘을 공부하는 것으로 판단됩니다.
join은 반복하며 + 하면 되는 것이니 단순한 부분이고... count 는 검색 알고리즘이라는 조금 큰 주제입니다.
https://en.wikipedia.org/wiki/String-searching_algorithm
https://github.com/m00dy/string-matching-algorithms
참고하여 학습해보시기 바랍니다.
-
쉽게 생각하세요.
문자열을 하나로 합쳐서 한번만 처리히면 간단합니다.
Str = "주택의 주택이 주택을 했다.", "주택주택이 주택주택한건데 문제라도?", "저 주택은 해로운 주택이다." paragraph = ''.join(Str) print(paragraph.count('주택'))
- 아 이거 join count 이런거 안 쓰고 반복문이랑 if문 넣어서 풀어야되는거라 괜히 더 어렵네요 ㅠ 알 수 없는 사용자 2018.10.22 23:11
- 이 방식은 질문자분이 적으신 샘플에 한정하여 문제되지는 않지만, 만약 앞선 문장의 마지막 문자가 ‘주’로 끝나고 다음 문장의 첫 단어가 ‘택’으로 시작하면 결과가 달라질 수 있습니다. 영향을 주지 않을만한 seperator를 넣어야 할 듯 하네요. doodoji 2018.10.24 11:13
- 음 그럴수도 있겠네요. 지금 제시된 문자열은 모두 ?. 같은 종결 문자를 사용하고 있어서 고려가 불필요하지만 '주'로 끝나고 '택'으로 시작하는 경우는 잘못된 카운트가 될 소지가 있네요 정영훈 2018.10.24 20:58
댓글 입력