문자열 슬라이싱 -> 문자열은 변수로 지정되었을 때, 각각 문자의 위치에 따라 숫자로 indexing이 되는데 특정 문자열을 순서대로 불러올 때 슬라이싱을 사용. 문법은 변수명 [시작지점:끝나는 지점 바로 앞] 으로 구성됨.
예시)
A=”Life is too short, you need Python”
A[0:4] # ‘Life’
A[0:5] # ‘Life‘ 공백도 문자열로 치기 때문에 5번째 문자열을 공백으로 인식해서 공백이 나오게 됨.
A[5:7] # ‘is’
A[19:] # ‘You need Python’ : 뒤에 숫자 안 적으면 끝까지 출력됨.
A[:17] # ‘Life is too short’ : 앞에 숫자 안 적으면 처음부터 출력됨.
A[19:-7] # ‘You need’ – 기호를 사용할수도 있음. – 기호는 뒤에서부터 인덱스 번호를 세는 것임.
슬라이싱 된 문자열은 아래 예시와 같이 변수로 저장될 수 있음.
예시)
A = “20010331Rainy”
Date = a[:8]
Weather = a[8:]
Date -> 20010331
Weather -> Rainy
특정 문자열에서 특정 문자만 상황에 따라 바뀌게 구성할 수 있음. 예를 들어 “현재 온도는 18도입니다” 를 온도가 오르면 “현재 온도는 20도입니다” 로 바뀌는것처럼 할 수 있음.
예시)
Number= 3; “I eat %d apples.” %number
# %d는 개수가 들어갈 부분이고,
%d와 같은 것을 문자열 포맷 코드라고 부른다.
문자에는 %s가 활용된다. (“I eat %s apples.” % “five”)
문자열 포맷 코드는 아래와 같다
코드 설명
%s 문자열(string)
%c 문자 1개(Character)
%d 정수(Integer)
%f 부동 소수(Floating-point)
%o 8진수
%x 16진수
%% Literal % (문자 ‘%’ 자체)
%s는 어떤 것이든 문자열로 바꿔서 적용해줌. 3을 치든 3.14를 치든 %s를 활용하면 전부 문자열로 인식됨.
*주의사항 : 만약 %를 문자열에 표기하고 싶으면 포매팅 코드가 없을 때에는 %만 써도 되지만, 하나라도 포매팅 코드가 사용됬다면 %%로 표기해야됨.
예시)
“Error is %d%%.” % 98 -> Error is 98%
포맷 코드는 문자열 정렬 혹은 공백을 줄 때에도 사용될 수 있음.
예시)
“%10s” % “hi”
# ‘ hi’ 왼쪽에 10칸의 공백을 두고 문자열을 표기하라는 것임
“%-10sJane” % “hi”
# ‘hi jane’ – 기호가 사용된 경우이므로 오른쪽에 10칸의 공백을 두고 문자열을 표기하라는 것임
소수점 몇자리까지 표시할지도 정할 수 있음.
예시)
“%0.4f” % 3.42134234
# ‘3.4213’ 소수를 표기하는 것이니 %f가 쓰였고,
0.4는 4번째 소수점 자리까지만 표시하라는 뜻임.
“%10.4f” % 3.42134234
#‘ 3.4213’ f 앞의 숫자가 10.4로 바뀌면
왼쪽에 10칸의 공백을 두고 4번째 소수점 자리까지만 표시하라는 뜻임.
Format 함수와 {}를 활용해서 포매팅을 할수도 있음.
예시)
“I eat {0} apples”.format(3) # ‘I eat 3 apples’
“I eat {0} apples”.format(five) # ‘I eat five apples’
Number=3; “I eat {0} apples”.format(Number) # ‘I eat 3 apples’
2개 이상의 포매팅을 한 문장에 사용할 때에는 0 다음에 1, 다음에 2 와 같은 식으로 순서대로 지정해주면 됨.
예시)
Number=10
Day=”three”
“I ate {0} apples, so I was sick for {1} days.” .format(number, day)
# “I ate 10 apples, so I was sick for three days.”
0, 1 말고 format 뒤에 변수를 지정하고 변수명으로 적어도 동작함
예시)
“I ate {Number} apples, so I was sick for {Day} days.” .format(number=10, day=3)
# “I ate 10 apples, so I was sick for three days.”
인덱스 (0, 1 같은것) 과 변수명 혼용해도 동작함
예시)
“I ate {Number} apples, so I was sick for {1} days.” .format(number=10, 3)
# “I ate 10 apples, so I was sick for 3 days.”
Format을 활용해서 정렬도 할 수 있음.
예시)
“{0:<10}”.format(“hi”)
# ‘hi ‘ :<10을 사용하면 문자열의 총 자릿수가 10으로 지정되고 왼쪽으로 정렬되게 됨.
“{0:>10}”.format(“hi”)
# ‘ hi ‘ :>10을 사용하면 마찬가지로 문자열의 총 자릿수가 10으로 지정되고 정렬은 오른쪽으로 되게 됨.
“{0:^10}”.format(“hi”)
# ‘ hi ‘ :^10을 사용하면 가운데로 정렬됨
: 와 <>^ 기호 사이에 문자를 작성하면 공백에 해당 문자가 작성됨
“{0:=^10}.format(“hi”) # ‘=====hi=====‘
Format을 활용한 소수점 표시는 아래와 같이 하면 됨
예시)
Y= 3.4433233
“{0:0.4f}”.format(Y) # ‘3.4433’
Format 구문에서 중괄호를 문자열에 표시하고 싶으면 중괄호를 {{와 같이 두번 쓰면 됨
파이썬 3.6 이상 버전부터는 f를 이용한 포매팅도 가능함.
예시)
Name= ‘홍길동’
Age = 30
f’나의 이름은 {Name}입니다. 나이는 {Age}입니다.’
‘나의 이름은 홍길동입니다. 나이는 30입니다.’
f를 활용하면 표현식도 활용가능
예시)
Age = 30
f’나는 내년이면 {Age+1} 이 된다.’
# '나는 내년이면 31 이 된다.’
딕셔너리 (하나의 key에 여러 개의 value가 들어있는 것)를 활용할 수도 있음.
예시)
D= {‘name’:’홍길동’, ‘age’:30}
f’나의 이름은 {d[“name”]}입니다. 나이는 {d[“age”]}입니다.’
# ‘나의 이름은 홍길동 입니다. 나이는 30입니다.
정렬과 공백, 소수점은 format과 동일한 방식으로 할 수 있음.
문자 개수 세는 것은 count 함수를 쓰면 됨.
예시)
a=”hobby”
a.count(‘b’) -> 2
문자열 안의 특정 문자가 처음으로 나온 위치를 확인하려면 find 함수를 쓰면 됨.
예시)
a = “Python is the best choice”
a.find(‘b’) # 14
a.find(‘z’) # -1 존재하지 않는 문자열은 -1을 반환함
index 함수도 똑 같은 용도로 사용 가능
예시)
A = “Life is too short”
A.index(‘t’) # 8
A.index(‘z’) # 에러. Find와 index의 차이점은 index는 없는거 찾으라고 하면 에러가 뜸.
각각의 문자 사이에 특정 문자를 입력하려면 join을 사용하면 됨.
예시)
“,”.join(‘abcd’) # ‘a,b,c,d’
“,”join([‘a’,’b’,’c’,’d’]) # ‘a,b,c,d’
소문자를 대문자로 바꾸는건 upper을 사용하면 됨. 반대로 대문자를 소문자로 바꾸는건 lower을 사용하면 됨.
예시)
a=”hi”
a.upper() # ‘HI’
a=”HI”
a.lower() # ‘hi’
왼쪽 공백을 지우고 싶으면 lstrip을 사용. 오른쪽 공백을 지울 때에는 rstrip. 양쪽 고백을 다 지울지울 때 strip을 사용
예시)
a=” hi”
a.lstrip() # ‘hi’
문장안의 특정 내용을 바꾸고 싶으면 replace를 사용함.
예시)
a = “Life is too short”
a.replace(“Life”, “Your leg”) # ‘Your leg is too short’
문자열을 공백이나 : 등 기호와 같은 특정 기준에 따라 나눌수도 있음.
예시)
A=”life is too short”
A.split( ) # [‘life’,’is’,’too’,’short]
B=”a:b:c:d”
b.split(‘:’) # [‘a’, ‘b’, ‘c’, ‘d’]