파이썬에서 re.search, list, counter에 관한 질문입니다
조회수 1388회
제가 겪고 있는 문제를 예를 들자면 다음과 같습니다 a 리스트 중에서 pattern을 만족하는 단어를 추출해낸 후 그 단어들의 빈도수를 구해야하는 예제인데요,
a = ['이상해','이상한','요상한','이상하다','이상해진','이상해','이상해']
p = '이상' pattern = recompile(p)
for word in a : if pattern.search(word) : Counter(word)
라고 명령ㅇ르 입력하면 전체적인 단어 카운트가 되는 것이 아니라, 각 단어에 대해서 Counter('이 :1', '상:1', '해:1') ... ... .. 이런식으로 나오더라구요 제가 원하는 결과는
'이상해: 3', '이상하다 :1', '이상해진 :1' 이런 결과이거든요 어떻게 하면 위와 같은 결과가 나올수 있을까요?ㅜㅜ
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
if pattern.search(word) : Counter(word)
여기가 잘못되어있습니다. 아래와 같이 사용하시면 될 듯 하네요!
from collections import Counter import re a = ['이상해','이상한','요상한','이상하다','이상해진','이상해','이상해'] p = '이상' pattern = re.compile(p) answer = [] for word in a : if pattern.search(word) : answer.append(word) print(Counter(answer))
최대한 원본 코드의 로직을 변경하지 않는 선에서 작성했습니다!
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력