■ 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문법도 하나밖에 안됨
'python' 카테고리의 다른 글
20. 재귀알고리즘(구구단, 별, 팩토리얼, 최대공약수) (0) | 2019.03.26 |
---|---|
19. 대소문자 변환, 공백제거(upper, lower, lstrip, rstrip) (0) | 2019.03.26 |
17. comprehension (0) | 2019.03.25 |
16. 텍스트마이닝 (0) | 2019.03.25 |
15-2. 특정위치 문자열(count,find) (0) | 2019.03.25 |