본문 바로가기

python

18. isalpha, isdigit, 특수문자

728x90
반응형

 

84. 문자열이 알파벳인지 검사하기(isalpha)

*설명:

  1. 알파벳이 맞는지 확인: isalpha

  2. 숫자가 맞는지 확인   : isdigit

  3. 공백이 맞는지 확인   : isspace

해당 값을 세어서 숫자로 보여준다.

 

 

문제269.

겨울왕국 대본에 알파벳 문자의 갯수가 어떻게 되는가?

(중요: .read() .readlines 차이를 알아야 )

 

    

text_file = open("d:\\winter.txt", 'r')

lines=text_file.readlines()   #readlines 텍스트 파일을

                                #한줄 읽는다.

                 #readlines lines 프린트 해보자.

print(lines)  # 줄씩 \n으로 구분해서 리스트의 요소로 넣었다.

total=0

for s in lines:  # \n으로 구분된 대본문장을 줄씩, s 반복시킨다.

    cnt=sum(i.isalpha() for i in s)   #cnt 문장의 알파벳 갯수

    print(s,cnt)      #문장, 철자갯수(공백, 컴마빼고)

    total=total+cnt

print(total)      

 

설명

readlines 뜯어놓은 것은

  

for s in lines:

for i in s: (위에는 comprehension으로 처리됨)

s 문장 한줄이 나오고 : The end

i 문장의 철자가 하나씩 나옴:

T

h

e

 

e

n

d

read 뜯어놓은것은

for s in lines: 하면 철자 하나씩 나온다.

 

 

 

 

문제270.

겨울왕국 대본에 숫자가 있는지 출력하시오

text_file = open("d:\\winter.txt", 'r')

lines=text_file.readlines()

#print(lines)

total=0

for s in lines:

    cnt=sum(i.isdigit() for i in s)  #<<<--readlines for 한번더.

    #print(cnt)

    #print(s,cnt)

    total=total+cnt

print(total)

  

 read 간단하게 하면

 

text_file = open("d:\\winter.txt", 'r').read()

for i in text_file:

cnt=cnt+i.isdigit()

print(cnt)

 

 

문제271.

셜록홈즈 대본에는 숫자가 있는지 확인하시오

 

text_file = open("d:\\sherlock.txt", 'r')

lines=text_file.readlines()

#print(lines)

total=0

for s in lines:

    cnt=sum(i.isdigit() for i in s)

    #print(cnt)

    #print(s,cnt)

    total=total+cnt

print(total)

 

 

 

 

86. 문자열에 특수문자가 있는지 검사하기

 

 

 

문제272.

겨울왕국 대본의 전체 문자의 갯수는 어떻게 되는가?

 

text_file = open("d:\\winter.txt", 'r')

lines=text_file.readlines()

#print(lines)

total=0

for s in lines:

    cnt=len(s)

    total=total+cnt

print(total)

 

다른방법

text = open('d:\winter.txt').read() #readlines 한줄씩, read 는 전부다

len(text)  #공백(스페이스), 엔터(/n) 세어버린다.!!!!!!

 

다른방법

file = open("d:\\winter.txt", 'r').read()

import re

c=re.sub("\n",'',file) #엔터 제거

file=re.sub(" ",'',c)   #스페이스(공백)제거_(나중에 공백제거 안해도 )

print(len(file))

 

 

그러면,

전체갯수 코드에서 엔터(\n) 정제하고

값에서

문자+숫자+공백을 빼면

원하는 답이 나온다.

   

엔터 전체갯수 코드

import re

text= open("d:\\winter.txt").read()

text= re.sub("\n",'',text)

print(len(text))

 | |

file=open('d:\\winter.txt','r').read()

import re

file=(re.sub("\n",'',file).lower() )  #엔터 \n 을 ' '로 변경해라

print(len(file))

 

다른답:

file 에서 엔터. 공백 re.sub 하고

file - 알파벳+숫자

하면 특수문자 구할 있다.(273 문제답)

file = open("d:\\winter.txt", 'r').read()

import re

c=re.sub("\n",'',file)

file=re.sub(" ",'',c)

a=len(file)

cnt1=0

cnt2=0

cnt3=0

for i in file:

    cnt1+=i.isalpha()

    cnt2+=i.isdigit()

   

print(a-cnt1+cnt2)

 

 

 

 

문제273.

겨울왕국에는 특수문자가 개나 있는지 확인하기

 

특수문자=전체문자에서 알파벳, 숫자, 공백을 빼면 특수문자.

             전체문자- (문자+숫자+공백)

 

 

 

전체문자(엔터뺀거)

file=open('d:\\winter.txt','r').read()

import re

file=(re.sub("\n",'',file).lower() )  #엔터 \n 을 ' '로 변경해라

print(len(file))

 

 

 

문자+숫자+공백

text_file = open("d:\\winter.txt", 'r')

lines=text_file.readlines()

#print(lines)

total=0

for s in lines:

    cnt=sum(i.isdigit() for i in s)

    cnt1=sum(i.isalpha() for i in s)

    cnt2=sum(i.isspace() for i in s)

    #print(cnt)

    #print(s,cnt)

    total=total+cnt+cnt1+cnt2

print(total)

 

2844

틀린답

문자+숫자+공백 뽑은 lines

공백에 엔터가 들어간다.(isspace+\n)

 

 

 

import re

cnt1 = 0

cnt2 = 0

cnt3 = 0

text_file=open("d:\\winter.txt").read() #read 스크립트 통째로.

text_file= re.sub("\n",'',text_file) #그래서 엔터 정제.

for s in text_file:

    cnt1 += s.isdigit()

    cnt2 += s.isalpha()

    cnt3 += s.isspace() #isspace 엔터도 포함시키는데,위 정제로 엔터없음.

print(len(text_file) - (cnt1+cnt2+cnt3))

 

7083

 

.readlines 하면 안됨. 정제도 문장밖에 안되고, is문법도 하나밖에 안됨

 

  

 

 

 

 


728x90
반응형