파이썬 문자개수 출력

조회수 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)
    

    작성하시면 됩니다.

    • 감사합니다ㅠㅠ 아예 막히던 때보다 훨씬 도움이되었습니다! 알 수 없는 사용자 2018.6.4 12:05

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)