문자열 인덱싱
'''
문자열 인덱싱
파이썬은 문자열을 기본타입으로 지원할 뿐만 아니라 문자열을 관리하는 풍부한 명령을 가지고 있다.
문자열은 메모리상에 개별 문자들이 일렬로 늘어선 형태로 저장된다.
-문자열의 각 문자들은 인덱스(index)로 관리되며 맨 앞글자부터 0번이 부여되고
그뒤로 1씩 증가하는 순차적인 번호가 부여된다.
'''
s = "python"
print(s[0])
print(s[2])
print(s[5])
print(s[-5] == s[1])
# python은 0,1,2,3,4,5 이지만 -6,-5,-4,-3,-2,-1 이기도 한다.
ssn = "941211-1234567"
if ssn[7]=="2" or ssn[7] == "4":
print("여성입니다.")
elif ssn[7]=="1" or ssn[7]=="3":
print("남성입니다.")
------------------------결과-------------------------------
p
t
n
True
남성입니다.
문자열 슬라이싱
'''
문자열 슬라이싱
문자열 내부의 데이터를 부분적으로 추출할 때 사용하는 방법이다.
ex) 문자열 데이터[begin:end:step]
range함수처럼 시작인덱스는 포함하지만 끝인덱스는 포함하지않는다.
문자열을 슬라이싱할때 []내부의 3번째 값으로 step을 지정하면 해당 step만큼 건너뛰면서
읽은 후 추출한다.
'''
s = "python"
print(s[2:5:1])
print(s[1:4]) # step생략시 1로 처리
print(s[3:]) # 3번 인덱스부터 끝까지 추출
print(s[:4]) # 처음부터 4번 미만까지 추출
'''
퀴즈
ssn이라는 변수에 주민번호를 입력받아 저장하고
문자열 슬라이싱을 통해 주민번호 앞자리와 뒷자리를 따로 출력해봐라.
그리고 년도, 월, 생을 출력해봐라.
'''
print("-----------------------------------")
ssn = "950303-2010202"
year = ssn[0:6:1]
age= ssn[7:]
print(year)
print(age)
print(year[:2], "년도",year[2:4], "월",year[4:6], "일생" )
--------------------------------결과---------------------------------
tho
yth
hon
pyth
-----------------------------------
950303
2010202
95 년도 03 월 03 일생
1. 문자열 관리함수
함수 : len()
메서드 : find(), rfind(), index(), count()
'''
문자열 관리함수, 메서드
함수 : 모듈 내에서 공용적으로 사용할 수 있는 기능
메서드 : 클래스에 소속된 함수, 자료형을 밝히고 함수를 사용해야 한다.
-문자열은 수치형 자료에 비해 복잡하고 데이터의 저장개수가 가변적이어서 파이썬에서는 문자열을
조작할 수 있는 편리한 함수와 메서드를 제공하고 있다.
'''
s = "python programming"
# 내장함수 len(): 시퀀스자료형의 내부 데이터 개수를 구함
print(len(s))
p = [55, 66, 77, 88, 99]
print(len(p))
print(len(range(1, 1001)))
user_id = "1234"
if len(user_id) < 6:
print("id는 6글자 이상으로 작성하세요.!")
else:
print("id가 정상 등록되었습니다.")
'''
문자열 메서드 find() : 문자열 내부에 특정 문자를 검색하여 해당 문자의
인덱스를 알려줌. 앞에서부터 검색하여 찾음
메서드 rfind() : find와 같지만 뒤에서부터 검색함.
-find, rfind는 단어를 검색할 경우 해당 단어가 문자열 내부에 존재할 시 그 단어의
첫글자 인덱스 번호를 알려줌, 없을 시 -1을 반환함.
'''
print("-" * 40)
print(s.find("o"))
print(s. find("program")) # 시작위치를 알려줌
print(s.find("hello")) # 존재하지 않을경우 -1을 출력
pw = "ff!f1234"
if pw.find("!") == -1:
print("비밀번호에 반드시 !를 넣어주세요.")
else:
print("비밀번호가 정상 등록되었습니다.")
'''
메서드 index(): find와 효과는 같지만 찾는 단어가 없을 경우 에러 발생
'''
print("-" * 40)
print(s.index("r"))
#print(s.index("x")) 에러 발생
'''
메서드 count() : 문자열 내부에 찾는 단어의 출현 횟수를 알려줌.
'''
print("-" * 40)
message = """김밥을 먹고싶은데 김밥을 파는곳이 없네.. 왜 맛집 김밥은"""
print("'김밥'의 출현횟수: ", message.count("김밥"))
------------------------------결과---------------------------------
5
1000
id는 6글자 이상으로 작성하세요.!
----------------------------------------
4
7
-1
비밀번호가 정상 등록되었습니다.
----------------------------------------
8
----------------------------------------
'김밥'의 출현횟수: 3
2. 문자열 관리함수
함수 : in
메서드 : startswith(), endswith(), isalpha(), islower(), isupper(), isdecimal()
'''
in 키워드 : 특정 문자가 있는 인덱스 번호는 관심이 없고 단순히 포함여부만 확인하고 싶다면
in키워드를 사용한다.
in키워드는 문자열 내부에 찾는 단어가 포함되어 있다면 True를
포함되어 있지 않다면 False를 반환한다.
'''
s = "pyrhon programming"
print("a" in s) # a가 s문자열 내부안에 있나요? 있다면 True
print("q" in s)
print("pro" in s)
print("z" not in s)
'''
startswith() : 메서드는 문자열이 특정 단어로 시작하는지의 여부를 검사하여 True, False를 반환
endswith() 메서드는 반대로 특정 단어로 끝나는지의 여부를 검사한다.
'''
print("--------------------------------------")
name = "홍길동"
if name.startswith("고"):
print("성이 고씨입니다.")
else:
print("성이 고씨가 아닙니다.")
print("--------------------------------------")
file = "고양이.jsp"
if file.endswith("jsp"):
print("확장자명이 jsp입니다.")
else:
print("확장자명이 jsp가 아닙니다.")
'''
사용자에게 데이터를 입력받을 때 입력값의 형태를 검사 할 수 있습니다.
1. isalpha() - 모든 문자가 알파벳형태인지를 조사
2. islower() - 모든 문자가 소문자인지를 조사
3. isupper() - 모든 문자가 대문자인지를 조사
4. isdecimal() - 모든 문자가 숫자인지를 조사
'''
print("-" * 40)
point = input("점수: ")
if point.isdecimal():
point = int(point)
print(type(point))
print("당신의 점수는", point, "점입니다.")
else:
print("점수를 숫자로만 입력하세요.")
-----------------------결과---------------------------
True
False
True
True
--------------------------------------
성이 고씨가 아닙니다.
--------------------------------------
확장자명이 jsp입니다.
----------------------------------------
점수: 30
<class 'int'>
당신의 점수는 30 점입니다.
3. 문자열 관리함수
'''
문자열 공백 제거 메서드
1. lstrip() : 문자열의 왼쪽 공백을 제거
2. rstrip() : 문자열의 오른쪽 공백을 제거
3. strip() : 문자열의 양쪽 공백을 모두 제거
'''
user_id = " abcd "
print(user_id + "는 알파벳")
print(user_id.lstrip() + "는 알파벳")
print(user_id.rstrip() + "는 알파벳")
print(user_id.strip() + "는 알파벳")
'''
문자열 대체 메서드
replace() : 특정 단어를 모두찾아 새로운 단어로 일괄 대체 한다.
replace("교체할 단어", "변경할 단어", 앞에서 몇번째 까지 바꿀껀가)
'''
s= "우유엔 딸기우유가 있고 초코우유가 있고 바나나우유가 있지"
print(s.replace("우유", "초콜렛", 2)) #우유 글자중 앞에서 2개까지만 변경
--------------------결과 ---------------------------
abcd 는 알파벳
abcd 는 알파벳
abcd는 알파벳
abcd는 알파벳
초콜렛엔 딸기초콜렛가 있고 초코우유가 있고 바나나우유가 있지
'''
슬라이스도 가능하지만 슬라이스는 인덱스로 자르기때문에 범위를 정확히해야한다.
정확하게 하지 못할경우 사용하는게 split이다.
문자열 분할 메서드 split()
split 메서드는 구분자를 기준으로 문자열을 분할하여 리스트에 저장한뒤 변환한다.
구분자를 지정할 때는 문자열로 지정해야 한다.
'''
s1 = "떡볶이 김말이 닭강정"
print(s1.split()) # 괄호 안을 비우면 공백을 구분자로 하여 분할
s2 = "서울->대전->대구->부산"
city = s2.split("->")
print(city)
s3 = "홍길동 | 오렌지나무 | 2019년 1월"
data = s3.split(" | ")
for a in data:
print(a)
---------------------결과--------------------
['떡볶이', '김말이', '닭강정']
['서울', '대전', '대구', '부산']
홍길동
오렌지나무
2019년 1월
'''
문자열 형태 변경 메서드
1. lower() : 영문 알파벳을 모두 소문자로 변환
2. upper() : 영문 알파벳을 모두 대문자로 변환
3. swapcase() : 영문 대소문자를 반대로 뒤집음
4 capitalize() : 문장의 시작문자만 대문자로 나머지는 소문자로 변경
5. title() : 단어의 각 첫글자만 대문자로 나머지는 소문자로 변경
'''
answer = input("사과의 영문 철자를 쓰세요 : ")
if answer.lower() == "apple":
print("정답!")
else:
print("오답!")
-----------------------결과------------------------
사과의 영문 철자를 쓰세요 : apple
정답!
'IT' 카테고리의 다른 글
9. 파이썬 - 리스트 (0) | 2022.07.29 |
---|---|
8-1.파이썬 - 문자열 포맷팅 (0) | 2022.07.27 |
7. 파이썬 - 중첩 반복문, 탈출문(break, continue), 무한루프 (0) | 2022.07.26 |
6. 파이썬 - while문, for문, range (0) | 2022.07.25 |
5. 파이썬- if문, 다중 분기 조건문, 중첩 if문 (0) | 2022.07.24 |