프로그래밍

파이썬 질문 있읍니다..

import keyword
import re

 

f = open('Python2.py', 'r', encoding = 'UTF8')
dic = {}
count = 0

 

for i in f:
    word = re.sub('\n', '', i)
    word = re.sub(':', '', i)
    word = i.split()

 

    for key in word:
        if key in keyword.kwlist:
            count += 1
            dic[key] = count


print(dic)

 

스파이더로 작성했습니다

 

제가 의도하려는 코드는 임의의 파일 안에 있는 keyword와 keyword의 빈도 수를 딕셔너리에 넣는것입니다

 

일단 위의 코드는 keyword를 딕셔너리의 키로 설정하는 것 까지는 됐는데, 밸류부분에서 빈도 수가 정확하게 일치하지 않습니다

 

count를 어떻게 해줘야 빈도 수가 나올까요?

 

아니면 다른 코드에 문제가 있는지.. 잘 모르겠습니다

 

쉬울것 같은데 어려워서 골머리를 앓고 있습니다ㅜ

13개의 댓글

2020.09.21

카운트 0으로 초기화 없이 계속 올라가기만 하는거는 의도하신건가요?

0
2020.09.21
@필수

for key in word: 루프를 넘기고 count = 0을 해봤는데도

이상한 값이 나와서 없애봤습니다

0
2020.09.21
@쥐약

re.sub('\n', '', f)처럼 파일단위로 변환하지 않고 i for f처럼 한글자씩 반복하시는 이유가 따로 있나여

0
2020.09.21
@필수

그건 제가 몰랐던 부분입니다.. 그렇게도 되는군요

0
2020.09.21
@쥐약

파일이 몇글자인진 모르겠지만 f=f.read(50)처럼 글자수 정해서 문자열로 저장한 뒤에 re.sub('\n|:','',f) 해보세요~

0
2020.09.21
@쥐약

그리고 split()쓰신거 보면 띄어쓰기로 구분하고싶으신 것 같은데 그럼 ''말고 ' '(띄어쓰기)가 맞겠네여

0
2020.09.21
@필수

코드가 많이 짧아졌네요 감사합니다..

그런데 아직 count의 늪에서 벗어나질 못했네요.. 몇시간동안 보느라 피곤해서 그런건지..ㅠㅠ

내일 다시 해봐야겠습니다

0
2020.09.22
@필수

import re

import keyword

 

infile = open('Python2.py', 'r', encoding = 'UTF8').read(10000)

re.sub('\n|:', '', infile)

word = infile.split()

dic = {}

 

for key in word:

count = 0

if key in keyword.kwlist:

for i in range(len(word)):

if word[i] == key:

count += 1

dic[key] = count

 

print(dic)

 

된 것 같아요! 도움주셔서 감사합니다 ㅠㅠ

0
2020.09.22
@쥐약

잘은 모르겠지만 파이썬 파일 내의 예약어당 해당 예약어가 쓰인 횟수를 기록하는 딕셔녀리를 만들고싶으시다면

import re

import keyword

 

infile = open('Python2.py', 'r', encoding = 'UTF8').read()

re.sub('\n|:', ' ', infile) # 띄어쓰기 넣어주시구

word = infile.split()

 

dic = {}

 

for key in word:

 

if key in keyword.kwlist: # word를 띄어쓰기마다 자른 하나의 단어가 예약어일때

 

if key in dic : #딕셔너리에 원래 있었다면 밸류값만 하나 더함

 

dic[key]+=1

 

else : #딕셔너리에 없었다면 갯수가 1인 키값 하나 생성

 

dic[key]=1

 

print(dic)

 

###갯수는 해당 딕셔너리의 밸류값에 저장되므로 카운트 변수는 필요없겠네요

이렇게 [key in dic ~ else] 구문으로 딕셔너리에 있으면 증가 없으면 생성하는법을 외워두시면 나중에 해쉬알고리즘 쓰실때나 횟수기록하실때 진짜 간편하니까 외워두시는게 좋아연 즐거운 파이썬 하십셔

0
2020.09.22
@필수

정말 이해가 잘됐네요 감사합니다

key in dic 이걸 생각을 못하고 카운트 변수에 힘을 너무 줬네요

편안한 밤 되십셔

0
2020.09.22

제가 keyword 라이브러리를 몰라서 그러는데 list(open(~~))으로 리드 안해도 배열형식으로 나오나요?

0
2020.09.22
@alco

위 코드상 word = i.split() 부분에서 한 줄씩 list가 출력되는걸 확인했습니다

0
2020.09.22
@쥐약

아 맞넹 그러면 윗분 말대로 '' 말고 ' '쓰시면 바로 되실듯

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180526 [컴퓨터] 메인보드에 맞는 그래픽 카드 좀 추천해줘 갠챠나 0 방금 전 0
180525 [잡담] 개드립접속시 css 차단인가 광고차단 풀라고 하는데 스시오 0 10 분 전 17
180524 [컴퓨터] 님들 모니터암 이거 호환 될거같음? 5 저는기어다닐거에요 0 39 분 전 34
180523 [잡담] 리얼포스 45g 10만원에 파는데 4 짬지 0 1 시간 전 101
180522 [모바일] 내 s20+ 망가짐 3 모코하와이 0 2 시간 전 93
180521 [잡담] 왜 웹 발전은 거꾸로 가는가 1 노보케인 0 8 시간 전 243
180520 [컴퓨터] 이 정도면 이륙 가능함? 2 Cat드립미어캣 0 8 시간 전 95
180519 [컴퓨터] 씨퓨 온도상승으로 인한 쿨러작동 관련하여 질문드려용 ㅠㅠ 8 납븐연 0 9 시간 전 100
180518 [모바일] 뉴진스 혜린이 배경화면 3 Benetton 0 10 시간 전 212
180517 [모바일] 𝙄𝙑𝙀 배경화면 1 Benetton 0 10 시간 전 147
180516 [잡담] 개드립에올라왔던 새로운마우스 괴기 0 11 시간 전 142
180515 [컴퓨터] 외장 하드 추천좀 3 ㄴㅇㄹ 0 11 시간 전 73
180514 [프로그래밍] 의사는 뽑는 인원 제한하는데 부캠은 왜 제한 안 할까 5 조강현 0 12 시간 전 216
180513 [잡담] 제품좀 찾아줄 수 있음? 1 SNRB 0 12 시간 전 73
180512 [컴퓨터] 듀얼모니터 쓰는데 3 아잠시만내손으로... 0 13 시간 전 111
180511 [컴퓨터] 엠프리스 무접점 쓰다가 이번에 우연히 8bitdo 구매해서 쓰는데 울려대는사이렌 0 13 시간 전 103
180510 [컴퓨터] 아이맥 프로는 소리소문없이 사라졌네 chopin19 0 13 시간 전 110
180509 [컴퓨터] LTSC 쓰면 안됨? 3 가스가면스 0 13 시간 전 77
180508 [컴퓨터] 바브삼 개좋네 2 취업했다 0 15 시간 전 116
180507 [컴퓨터] 간만에 친구컴 조립 3 홍치 0 17 시간 전 177