[Python] 문자열 자료형

Kook Han·2020년 5월 31일
0

Python

목록 보기
7/13

1. 문자열 슬라이싱

문자열 슬라이싱 -> 문자열은 변수로 지정되었을 때, 각각 문자의 위치에 따라 숫자로 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

2. 문자열 포매팅

특정 문자열에서 특정 문자만 상황에 따라 바뀌게 구성할 수 있음. 예를 들어 “현재 온도는 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’]

0개의 댓글