본문 바로가기

python/코딩자율학습단

나도코딩의 파이썬 입문_4장

 

나도코딩의 파이썬 입문_코딩자율학습단

4장_ 문자열 다루기

 

 

4.1 문자열

# 문자열

sentence = '나는 소년입니다.'
print(sentence)
sentence2 = "파이썬은 쉬워요"
print(sentence2)
sentence3 = """
나는 소년이고,
파이썬은 쉬워요
"""
print(sentence3)

# 변수 자료형 확인
type(sentence1) # <class 'str'>

 

 

4.2 원하는 만큼 문자열 자르기 : 슬라이싱

# 슬라이싱
jumin = "990120-1234567"

print("성별 : " + jumin[7]) # 7번째 값 출력 : 1
print("연 : " + jumin[0:2]) # 0부터 2 직전값까지(0,1) : 99
print("월 : " + jumin[2:4]) # 2부터 4 직전값까지(2,3) : 01
print("일 : " + jumin[4:6]) # 4부터 6 직전값까지(4,5) : 20

print("생년월일 : " + jumin[:6]) # 처음부터 6 직전값까지 : 990120
print("뒤 7자리 : " + jumin[7:]) # 7부터 끝까지 : 1234567
print("뒤 7자리(뒤에서부터) : " + jumin[-7:] # 맨 뒤(-1)에서 7번째 ~ 끝까지 : 1234567

 

 

# 주의

# 주의
# 실행결과 : apple
fruit = "apple"
print(fruit[:])
print(fruit[0:])
print(fruit[:5])
print(fruit[:-1]) # 실행결과 : appl 처음부터 -1(e)직전값 까지

 

 

4.3 함수로 문자열 처리

# 문자열 처리 함수
python = "Python is Amazing"
print(python.lower()) # lower 소문자 : python is amazing
print(python.upper()) # upper 대문자 : PYTHON IS AMAZING
print(python[0].isupper()) # 0번째 글자가 대문자인지 : True
print(python[1:3].islower()) # 1,2번째 글자가 소문자인지 : True
print(len(python)) # len 문자열 길이 : 17
print(python.replace("Python", "Java") # replace 글자 변경 : Java is Aamazing

index = python.index("n") # index 찾는 문자가 몇번째 위치인지 : 5
print(index)
index = python.index("n", index + 1) # 인덱스 6이후부터 n 위치 찾기 : 15
print(index)

print(python.find("n")) # find 찾는 문자가 몇번쨰 위치인지 : 5

# index 함수와 find 함수의 차이점
print(python.find("Java")) # find 찾는 문자가 없을 경우 => -1 반환, 계속 수행
print(python.index("Java")) # index 찾는 문자가 없을 경우 => 오류, 프로그램 종료
print("hi") # index 오류 및 종료 / find -1 반환 후 hi 출력

print(python.count("n")) # 찾는 문자가 몇 번 나오는지 : 2

 

 

4.4 문자열 포맷팅

# 문자열 포맷팅
print("a" + "b") # ab
print("a" , "b") # a b

# 방법 1
print("나는 %d살 입니다." % 20) # %d : 정수값을 d에 넣는다
print("나는 %s을 좋아해요." % "파이썬") # %s : 문자열을 s에 넣는다
print("Apple은 %c로 시작해요." % "A") # %c : 한 글자 문자를 c에 넣는다
# %s
print("나는 %s살 입니다." %20) # %s는 숫자, 한 글자 또한 가능
print("나는 %s색과 %s색을 좋아해요." % ("파란", "빨간")) # 값이 여러개

# 방법 2
print("나는 {}살 입니다".format(20)) # .format()의 값을 {}에 넣는다
print("나는 {}색과 {}색을 좋아해요".format("파란", "빨간")) # 파란색과 빨간색
print("나는 {1}색과 {0}색을 좋아해요".format("파란", "빨간")) # 빨간색과 파란색

# 방법 3
print("나는 {age}살이며, {color}색을 좋아해요".format(age = 20, color = "빨간"))
print("나는 {age}살이며, {color}색을 좋아해요".format(color = "빨간", age = 20))

# 방법 4 (v.3.6 이상~)
age = 20
color = "빨간"
print(f"나는 {age}살이며, {color}색을 좋아해요.")

 

 

4.5 탈출문자

# 탈출 문자
print("백문이 불여일견 \n백견이 불여일타") # \n 줄바꿈해서 출력

# 실행 값 : 저는 "나도코딩" 입니다.
print("저는 '나도코딩'입니다.")
print('저는 "나도코딩"입니다.')
print("저는 \"나도코딩\"입니다.) # \" ~~~ \" : 문장 내에서 "~~~" 출력
print("저는 \'나도코딩\'입니다.) # \' ~~~ \' : 문장 내에서 '~~~' 출력

# \\ : 문장 내에서 \ 출력
print("C:\\Users\\python\\Desktop\\PythonWorkspace")

# \r : 커서를 맨 앞으로 이동
print("Red Apple\rPine") # 커서 맨 앞으로 이동해 Red => Pine : PineApple

# \b : 백스페이스(한 글자 삭제)
print("Redd\bApple") # RedApple

# \t : 탭
print("Red\tAppel") # Red		Apple

 

 

# 실습 문제

# 실습 문제
# 사이트별로 비밀번호를 생성하는 프로그램
# http://naver.com | http://daum.net | http://google.com | http://youtube.com
# 조건) http:// 부분 제외, 처음 만나는 점(.)이후 부분 제외
#       남은 글자 중 첫 세자리 + 글자 개수 + 글자 내 'e' 개수 + '!' 구성

url = "http://naver.com"
# url = "http://google.com"
my_str = url.replace("http://", "") # 조건) http:// 제외 => naver.com
# print(my_str)
my_str = my_str[:my_str.index(".")] # 조건) 처음 만나는 점(.) 이후 부분 제외 => naver
# my_str[0:5] => 0 ~ 5 직전값까지 (0,1,2,3,4)
# 조건) 남은 글자 중 첫 세자리(nav) + 글자 개수(5) + 글자 내 'e' 개수(1) + "!" 
password = my_str[:3] + str(len(my_str)) + str(my_str.count("e")) + "!"
print("{0} 의 비밀번호는 {1} 입니다.".format(url, password))

# url = "http://naver.com" => nav51!
# url = "http://google.com" => goo61!

 

 

# 셀프 체크

# 셀프 체크
# 주어진 영어 문장을 첫 글자는 대문자로, 나머지 글자는 모두 소문자로 변환하는 프로그램
sentence = "the early bird catches the worm."
sentence = "Actions Speak Louder Than Words."
sentence = "PRACTICE MAKES PERPECT."
print(str(sentence[:1].upper()) + str(sentence[1:].lower()))
# 답) print(sentence[0].upper() + sentence[1:].lower())
# 파이썬 제공 문자열 함수 => print(sentence.capitalize())

 

 


 

 

 

# 실습 결과