Coding/Jump to Python

Python - 문자열 자료형/연산/길이/index/format/문자열 함수/ join / split / strip / upper / count

빈그레 2023. 9. 7. 22:23

 


02-2 문자열 자료형

 

 

 

따옴표로 문자열 만들기 

 

"Hello Yezi"
" " "  Hello Yezi " " "
'Hello Younghong'
'''Hello Younghong'''

 큰 따옴표와 작은 따옴표를 사용하여 문자열을 만드는 방법은 총 4가지이다.

보통은 하나씩 붙이는 방법을 쓰나, 문장 내에 '나 ''를 쓰고싶은 경우에는 그와 다른 방법으로 문자열을 표현해주어야 한다.

문자열 내에서 사용한 따옴표를 문자열을 묶을 때에도 동일하게 사용하면 syntaxError가 발생할 것이다.

 

동일한 따옴표를 사용하려면 문자열 내의 것에는 백슬래시(\)를 붙여서 사용해야 한다.

#백슬래시 예시
food = 'Subin\'s favoite food is perl'

 

 

여러줄인 문자열을 변수에 대입하기

 

여러줄인 문자열을 변수에 넣기 위해서는 이스케이프 코드인 '\n'을 삽입하면 줄 변경이 된다.

multiline = "Life is too short\nYou need python"

하지만 이 방법은 가독성이 떨어지므로 따옴표를 사용한 다른 방법으로 multiline을 표현한다.

 

 

작은 따옴표나 큰 따옴표를 위와 같이 3개 붙여 문장을 입력하면 

 

 

위와 같이 작성한 내용 그대로 줄바꿈을 출력해낼 수 있다.

 

 

이스케이프 코드

 

: 이스케이프 코드란 미리 정의해둔 '문자 조합'이다. 출력물을 보기 좋게 정렬하는 용도로 사용된다.

 

 

문자열 연산

 

- 문자열 더하기 

 +를 이용하여 문자열이 들어있는 변수를 더하면 두 문자열이 더한 순서 그대로 합해진다.

 

- 문자열 곱하기

 *를 이용하여 문자열이 든 변수를 상수와 곱하면 해당 문자열이 상수배만큼 반복된다.

 

 

 

문자열 길이

 

a="Life is too short"
len(a)

 

위와 같이 len함수에 길이를 구하려는 문자열 변수를 넣으면 문자열 길이가 출력된다.

 

 

 

문자열 인덱싱

 

문자열의 인덱스는 0부터 시작한다. (파이썬에서 수는 항상 '0'부터)

하지만 뒤에서부터 셀 때에는 '-1'부터 시작한다. 따라서 위 문자열이 변수 a에 들어있다고 가정할 때, a[-1]은 n을 나타낸다.

[-0]은 [0]과 동일하기 때문에 마이너스를 필요로 하는 역으로의 index는 -1부터 시작한다.

 

 

 

 문자열 슬라이싱

 

문자열에서 일부만 뽑아내고 싶을 때, 위와 같이 인덱스로 끌어내어

문자열 연산으로 또 다른 변수에 집어넣어 출력할 수 있다.

 

- 인덱스를 하나씩 뽑아내지 않고 위와 같이 일부 array로 한 번에 뽑아낼 수도 있다. 

- 슬라이싱할 때 시작 숫자가 꼭 0이지 않고도, 중간부터 뽑아낼 수 있다.

- index에 대해 -를 사용할 수 있다.

 

 

 

(주의할 점)

array의 마지막 index에 있는 문자열은 뽑아내지 않는다

예를들어 [0:3]이라 하면 위와 같이 0보다 크거나 같고 3보다는 작은 index들을 의미한다.

 

 

 

위 코드에서 date의 들어갈 문자열의 끝번호로 쓰인 index 8에 대해서는 문자열로 가져오지 않기 때문에

weather에만 index8에 들어있는 R이 들어간다.

 

 

슬라이싱 번호 생략

 

-시작 index 삭제 [:13]

시작 index를 삭제하면 문자열의 처음부터 끝 번호까지 뽑아낸다

 

-끝 index 삭제 [23:]

끝index를 삭제하면 시작 index부터 문자열의 끝까지 뽑아낸다.

 

- 모두 생략 [:]

 문자열의 처음부터 끝까지 모두 뽑아낸다.

 

 

 

문자열 일부 바꾸기

 

문자열의 index를 이용하여 문자열의 일부를 변경할 수 있다.

 

 

 

문자열 포매팅

 

- 문자열 포맷 코드

 

문자열 포맷 코드를 작성할 때에 문자열 내에 %기호가 사용되므로

퍼센테이지를 나타내는 용도로 쓸 때에는 %%와 같이 두 번 작성해야 파이썬이 %라는 하나의 기호로 인식한다.

 

문자열 뒤에 삽입되는 값들은 type을 따로 지정해주지 않아도 자동으로 문자열 내에 명시된 %어쩌구 type으로 변한된다.

 

 

 

- 예시

 

 

문자열 내에서 decimal을 넣고 싶은 자리에 %d를 넣고 문자열 출력시에

d에 들어갈 값만 %와 함께 삽입해주면 된다.

 (숫자 대신 변수 형태로 삽입해주어도 된다. )

 

 

string에 대해서도 동일한 방법으로 삽입하면 된다.

 

 

2개 이상의 값을 넣을 때에는 다음과 같이 괄호와 ,를 이용하여 순서대로 명시해준다.

 

 

 

format 함수 

 

format함수를 이용하면 %를 이용하지 않고도 인덱스 항목만 넣어 포매팅을 할 수 있다.

 

 

 ( 문자열 바로 대입  )

 

 

(  변수로 대입  )

 

 

( 2개 이상의 값 넣기 )

 

 

( 인덱스 항목 대신 name으로 넣기 )

 

 

 

문자열 관련 함수

 

- count : 문자 개수 세기

 

a="hobby"       #변수에 문자열 넣기
a.count('b')	#변수에 count함수 적용하여 문자 b 찾아서 개수 구하기

 

 

- find : 문자가 처음 나온 위치 반환

 

a="python is the best choice"
a.find('b')   #a에 find함수 적용시켜 b가 나오는 첫 위치 찾기

만약 find함수를 이용했으나, 해당 문자열 내에 찾는 문자가 없다면 -1이 반환된다.

 

비슷한 역할을 하는 함수로 index가 있다.  문자열을 갖는 변수에 index함수를 적용시키면 find와 동일하게 해당 문자가 처음으로 나오는 index를 반환해준다.

하지만 index함수는 문자열에 존재하지 않을 때에 error가 뜬다.

 

 

 

 

- join : 문자열 삽입

 

 

[ array에서의 join ]

",".join('abcd')

'a,b,c,d'

문자열 array를 ","로 join하면 문자열 사이사이에 ,가 삽입된다.

 

 

[ list에서의 join ]

",".join(['a','b','c','d'])

'a,b,c,d'

list로 주어진 것을 ,로 join하면 해당 list는 array가 된다.

즉 join은 큰 따옴표 안에 들어가는 연결고리로 array나 list를 하나로 합친다는 의미를 내포하고 있다.

array는 원래 하나의 문자열이지만, list는 각각이 하나의 문자열로 합쳐진다.

 

 

 

- upper / lower : 대소문자 바꾸기

 

a="sanghoon"
a.upper()

#출력
'SANGHOON'

 

 

 

- lstrip / rstrip / strip : 공백 지우기

 

a="    hi"
a.lstrip()    #왼쪽 공백 지우기

#출력
'hi'

lstrip은 왼쪽 공백을 지우고, rstrip은 오른쪽 공백을 지우고 strip은 문자열 양쪽의 공백을 지운다.

 

 

 

 

- replace : 문자열 바꾸기

 

a="Life is too short"
a.replace("Life", "Your leg")

#출력
'Your leg is too short'

replace함수를 이용해서 문자열 내부의 특정한 값을 다른 값으로 치환할 수 있다.

 

 

 

- split : 문자열 나누기

#default는 공백 기준 구분
a="Life is too short"
a.split()

#출력 
['Life','is','too','short']


#기호를 기준으로 구분
b="a:b:c:d"
b.split(':')

#출력
['a','b','c','d']

split은 문자열을 list형태로 나누어준다. 함수에 아무런 파라미터를 넣어주지 않으면 공백을 기준으로 나누어 리스트를 생성하고, 함수의 파라미터로 문자를 넣어주면 해당 문자를 기준으로 나누어 리스트를 생성한다.