프로그래밍

파이썬 질문 있읍니다..

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
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180033 [잡담] 레이니 못산 친구들 보셈 2 리밍 0 18 분 전 32
180032 [정보] 여기 사이트 믿을만 할까요 10 1542321542 0 3 시간 전 226
180031 [컴퓨터] Youtube Premium 광고 회피방법 11 도의지구 3 4 시간 전 365
180030 [정보] 윈도우 10 사용중인데 윈도우키+L 버튼 누르는 상태를 자동... 11 니말이맞아 0 4 시간 전 160
180029 [모바일] 애플워치 구형 중고 vs SE2 6 휴지를적당히사용... 0 5 시간 전 140
180028 [잡담] 구라도 적당히쳐야지 4 수육을쏘면탕수육 1 8 시간 전 246
180027 [컴퓨터] 유전원 usb 허브라고 문어발쓰다 죄다고장남 1 두뇌풀가동 0 11 시간 전 168
180026 [컴퓨터] 갤북4vs아이패드 신형 2 부두둥탁 0 12 시간 전 162
180025 [컴퓨터] 이거 모니터 고장난건가 2 EPS 0 13 시간 전 82
180024 [컴퓨터] 수냉쿨러 없었으면 덕트 쪽으로 컴터개발이 이루어 졋을듯 3 침혜랄 0 14 시간 전 181
180023 [컴퓨터] 요즘 보드들은 wifi가 신기하게 나오네 13 교미짝짓기 0 14 시간 전 315
180022 [잡담] 맥북 병은 사야 치료됨 11 장난없는사람 0 16 시간 전 304
180021 [컴퓨터] 모니터 이 둘 중이 뭐가 더 나음? 7 XDLOL 0 17 시간 전 157
180020 [컴퓨터] 모니터질문 or 추천좀용 10 20202021 0 19 시간 전 106
180019 [잡담] AI 요약 개웃기네 4 아도크 2 19 시간 전 323
180018 [컴퓨터] 모니터 사야하는데 11 XDLOL 0 19 시간 전 121
180017 [잡담] 크로미움 브라우저들 엔비디아 화면 깨지는 글리치 더 심해지네 1 ye 2 19 시간 전 134
180016 [잡담] s23 OneUI 6.1 업뎃 떴다 4 아도크 0 20 시간 전 350
180015 [컴퓨터] 영상편집용으로 프레데터 헬리오스 어떳슴까?? 2 으라야야 0 21 시간 전 89
180014 [잡담] 최근에 유튭프리미엄 우회 해본사람? 16 itx 0 22 시간 전 349