파이썬 문자개수 출력
조회수 2407회
import urllib.request
infile = urllib.request.urlopen("http://www.yahoo.com/index.html") f = infile.read().decode().split()
freqs ={}
for line in f: for char in line.strip(): if char in freqs: freqs[char] += 1 else: freqs[char] = 1
freqs_list = freqs.keys()
for char in freqs_list: print( char, freqs[char] )
이렇게하면 char형을 갖는 문자의 개수를 전부 찾아 카운트한걸 출력하는데, 이걸 응용시켜서 알파벳의 개수만 찾아서 카운트한후 출력하고싶은데 뜻대로 잘 되지않네요... freqs[char] => 이부분을 변경해야할것같은데 도움 구하고싶습니다!
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
제 생각엔
http://www.yahoo.com/index.html
사이트에 알파벳이 각각 몇 회 반복되는지 알고싶어하시는 것 같네요. 정규표현식과 Counter 클래스를 사용하면 될 것 같습니다.import urllib.request import re import collections infile = urllib.request.urlopen("http://www.yahoo.com/index.html") f = infile.read().decode().split() regex = re.compile(r"[a-zA-Z]") # 알파벳을 추출하기 위한 정규표현식 letters = ''.join(f) # 정규표현식을 적용하기 위해 list f의 원소를 string 으로 이어붙임 all_matches = regex.findall(letters) # letters로부터 모든 알파벳을 찾아냄 counter = collections.Counter(all_matches) # collections.Counter 클래스를 이용해 각 알파벳을 카운트 print(counter)
- 답변 정말정말 감사합니다 ㅠㅠㅠ 다만 학과내에서 배운 지식으로 코딩해야하는지라 제가 사용할수는없을것같네요 ㅎㅎ..... 그래도 정말 다시한번 감사드립니다 ! 알 수 없는 사용자 2018.6.4 11:29
- 앗, 학과에서 배운 지식이라면 for 문 정도만 쓸 수 있는건가요? 그렇다면 수준에 맞춰서 다시 코드를 작성해드릴게요. Demi 2018.6.4 11:33
- 헐... 그렇게 해주시면 정말 감사합니다...넵 for 문정도로 표현해야할것같네요...ㅠ 알 수 없는 사용자 2018.6.4 11:38
- 추가해드렸어욤 Demi 2018.6.4 11:49
-
예외처리 (try-except)를 배우셨다면 다음과 같이
import urllib.request infile = urllib.request.urlopen("http://www.yahoo.com/index.html") f = infile.read().decode().split() letters = ''.join(f) # 한번에 iterate 하기 위해 f의 원소를 string 으로 이어붙임 answer = {} for i in letters: if i in 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM': try: answer[i] += 1 except: answer[i] = 1 print(answer)
예외처리를 안배우셨다면 다음과 같이
import urllib.request infile = urllib.request.urlopen("http://www.yahoo.com/index.html") f = infile.read().decode().split() letters = ''.join(f) # 한번에 iterate 하기 위해 f의 원소를 string 으로 이어붙임 answer = {} for i in letters: if i in 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM': if i in answer: answer[i] += 1 else: answer[i] = 1 print(answer)
작성하시면 됩니다.
댓글 입력