관리 메뉴

지나가는 이야기

[Python] 파일 속 문자 개수 구하기, 문자열 문자 개수 구하기 본문

Computer language : 컴퓨터 언어/Python

[Python] 파일 속 문자 개수 구하기, 문자열 문자 개수 구하기

지나가는 이야기 2020. 8. 6. 12:00
728x90
반응형

 

이번에는 파일 또는 문자열에 있는 문자 개수를 구하는 프로그램을 만들어 보겠습니다.

It is difficult to say what is impossible, for the dream of yesterday is the hope of today and the reality of tomorrow.

위 내용은 test.txt 파일의 내용입니다. 위 파일 내용에서 찾고자 하는 문자(알파벳)를 입력하면 파일의 문자를 처음부터 끝까지 읽어 해당 문자가 몇 개 있는지 반환하는 프로그램입니다.

 

s = input("개수를 알고 싶은 알파벳을 입력하세요. : ")
if(len(s) == 1):
    if(ord(s) >= 65 and ord(s) <= 90):                  
        break
    elif(ord(s) >= 97 and ord(s) <= 122):               
        break
    else:
        print("숫자말고 알파벳을 입력하세요.\n")
else:
    print("알파벳 하나를  입력하세요.\n")

먼저 입력을 받기 위해 input함수를 이용하고, 알파벳 한 글자만 입력을 받기 위해 if문과 아스키코드를 이용합니다.

 

while(1):                                                   
    s = input("개수를 알고 싶은 알파벳을 입력하세요. : ")

    if(len(s) == 1):                                        
        if(ord(s) >= 65 and ord(s) <= 90):                  
            break
        elif(ord(s) >= 97 and ord(s) <= 122):               
            break
        else:
            print("숫자말고 알파벳을 입력하세요.\n")
    else:
        print("알파벳 하나를  입력하세요.\n")

그리고  이것을 알바펫 한 글자만 입력을 받을 때까지 진행을 하기 위해 반복문을 이용을 하고, 알파벳 한 글자가 입력이 되었으면 반복문은 종료합니다.

 

 

f = open("test.txt", 'r', encoding="UTF-8")            

lines = f.readlines()

다음으로는 파일을 읽기 위해 open함수를 이용하고 readlines()를 통해 파일의 처음부터 끝까지 읽습니다.

 

str = ''.join(lines)
list(str)

readlines()를 사용하게 되면 파일의 내용을 한 줄씩 리스트에 저장하게 됩니다. 그렇게 되면 파일의 한 줄은 리스트의 한 인덱스에 전부 저장이 되므로 join함수를 이용해 리스트의 내용을 문자열로 변환을 하고 다시 list() 함수를 이용해 파일 내용을 한 글자씩 리스트로 변환했습니다.

 

for i in str:
    if(i == s):
        hap += 1

마지막으로 내가 입력한 문자와 리스트의 인덱스에 있는 문자가 같으면 hap이 1씩 증가를 하게 되어 문자가 몇 개 있는지 알 수 있습니다.

 

hap = 0                                                     # 알파벳의 개수를 저장하는 변수

while(1):                                                   # 반복문을 통해 한 글자 알파벳만을 입력 받는다.
    s = input("개수를 알고 싶은 알파벳을 입력하세요. : ")

    if(len(s) == 1):                                        # 한 글자를 입력 받는다.
        if(ord(s) >= 65 and ord(s) <= 90):                  # 아스키 코드를 이용하여 대문자 A~Z 까지만 입력 받는다.
            break
        elif(ord(s) >= 97 and ord(s) <= 122):               # 아스키 코드를 이용하여 소문자 a~z 까지만 입력 받는다.
            break
        else:
            print("숫자말고 알파벳을 입력하세요.\n")
    else:
        print("알파벳 하나를  입력하세요.\n")



f = open("test.txt", 'r', encoding="UTF-8")                 # 읽을 파일을 불러온다

lines = f.readlines()                                       # 파일의 처음 부터 끝까지 읽는다.

str = ''.join(lines)                                        # 리스트에 저장된 파일의 내용을 문자열로 바꾼다.
print("\n[파일 내용]")
print(str)
list(str)                                                   # 문자열인 파일의 내용을 다시 한 글자씩 리스트로 바꾼다.

for i in str:
    if(i == s):                                             # 리스트에서 찾고자하는 알파벳이 있으면 변수의 값이 1씩 증가
        hap += 1

print("\n\n찾고자 하는 알파벳 :",s, "\n개수 :", hap)

f.close()

위 코드는 전체 코드입니다.

 

위 사진은 결과로 정상적으로 작동이 됨을 확인할 수 있다.

 

728x90
반응형
Comments