본문 바로가기

Language/Python

[Python] 문자열 (연산하기, 인덱싱과 슬라이싱, 포맷팅)

728x90
반응형

문자열

문자열: 문자, 단어 등으로 구성된 문자들의 집합

문자열은 따옴표로 둘러싸여져 있음

"a" "123" "Life is too short, You need Python"

 

문자열 자료형 만드는 4가지 방법

- 큰따옴표(")로 양쪽 둘러싸기

- 작은따옴표(')로 양쪽 둘러싸기

- 큰따옴표 3개를 연속(""")으로 써서 양쪽 둘러싸기

- 작은따옴표 3개를 연속(''')으로 써서 양쪽 둘러싸기

 

문자열에 따옴표 포함시키기

- 문자열에 작은따옴표(') 포함시키기 -> 문자열을 큰따옴표로(")

>>> food = "Python's favorite food is perl"

 

- 역슬래시(\)를 사용해서 작은따옴표(')와 큰따옴표(")를 문자열에 포함시키기

>>> food = 'Python\'s favorite food is perl'

 

여러 줄인 문자열을 변수에 대입하고 싶을 때

- 줄을 바꾸기 위한 이스케이프 코드 \n 삽입하기

>>> multiline = "Life is too short\nYou need Python"

 

- 연속된 작은따옴표 3개(''') 또는 큰따옴표 3개(""") 사용하기

>>> multiline = '''Life is too short
...You need python'''
...
>>> print(multiline)

 


문자열 연산하기

문자열 더해서 연산하기 : +

>>> head = "Python"
>>> tail = "is fun!"
>>> head + tail
'Python is fun!'

, 은 띄어쓰기 한 칸

>>> year = 1991
>>> print("파이썬은", year + "년에 만들어졌다")
'파이썬은 1991년에 만들어졌다'

 

문자열 곱하기 : *

>>> a = "python"
>>> a * 2
'pythonpython'

 

문자열 길이 구하기 - len() 함수

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

 


문자열 인덱싱과 슬라이싱

문자열 인덱싱

- 문자열의 각 문자마다 인덱스, 즉 문자의 위치를 지정하는 것

- 파이썬에서 인덱스는 항상 0부터 시작

 

인덱싱을 활용한 문자열의 요소 접근

- 대괄호[] 안에 인덱스를 지정하면 인덱스에 위치한 문자열의 요소에 접근 가능

- 문자열[index]

>>> a = "Life is too short"
>>> a[0]
'L'
>>> a[12]
's'
>>> a[-1]    # 문자열 뒤에서부터 읽기(음수)
't'

 

문자열 슬라이싱

- 문자열[start:end] : start부터 end-1 index 문자열을 추출

>>> a = "Life is too short"
>>> a[0:4]
'Life'
>>> a[2:-6]
'fe is too'

 

- 문자열[:end] : 0번째부터 end-1 index의 문자열을 추출

 

- 문자열[start:] : start부터 끝까지 문자열을 추출

>>> a = "Life is too short"
>>> a[:4]
'Life'
>>> a[8:]
'too short'
>>> a[:]
'Life is too short'

 

- 문자열[start:end:step] : start부터 end-1까지 문자열에서 step만큼 건너뛰면서 문자열을 추출

>>> a = "Life is too short"
>>> a[2:11:2]
'f sto'

 


문자열 포맷팅

(문자열 안에 어떤 값을 삽입하는 방법)

 

①  % 서식 지정자

- 숫자 바로 대입 : 문자열 안에 숫자를 넣고 싶은 자리에 %d 문자열을 넣어 주고, 삽입할 숫자는 가장 뒤에 있는 % 문자 다음에 입력

>>> "I eat %d apples." % 3
'I eat 3 apples.'

 

- 숫자 값을 나타내는 변수로 대입

>>> number = 3
>>> "I eat %d apples." % number
'I eat 3 apples.'

 

- 2개 이상의 값 넣기 : 마지막 % 다음 괄호 () 안에 콤마(,)로 구분하여 입력

% 문자열 포맷 코드와 괄호 안의 자료형의 순서가 일치해야 함

>>> number = 3
>>> day = "three"
>>> "I ate %d apples, so I was sick for %s days." % (number, day)

 

- 문자열 포맷 코드

%s 문자열 / %c 문자 1개 / %d 정수 / %f 부동소수 / %o 8진수 / %x 16진수 / %% 리터럴(문자 % 자체)

* %s는 자동으로 % 뒤에 있는 값을 문자열로 바꿈

>>> "I have %s apples" % 3
'I have 3 apples'
>>> "rate is %s" % 3.234
'rate is 3.234

 

- 정렬과 공백

%10s : 전체 길이가 10인 문자열 공간에서 값을 오른쪽으로 정렬하고 나머지는 공백으로 처리

>>> "%10s" % "hi"
'        hi'

%-10s : 왼쪽으로 정렬하고 나머지는 공백

>>> "%-10sjane." % "hi"
'hi        jane'

 

- 소수점 표현하기

%0.4f : 소수점 네 번째 자리까지 나타냄 (반올림)

>>> "%0.4f" % 3.42135234
'3.4214'

%10.4f : 전체 길이가 10인 문자열 공간에서 오른쪽으로 정렬하며, 소수점 네 번째 자리까지 나타냄. 문자열의 길이는 정수, 소수점, 소수점 자릿수를 모두 포함

>>> "%10.4f" % 3.42135234
'    3.4213'

 

②  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개 이상의 값 넣기

>>> number = 3
>>> day = "three"
>>> "I ate{0} apples. so I was sick for {1} days." . format(number, day)

 

- 이름으로 넣기

{0}, {1}과 같은 인덱스 대신 {name} 형태로 사용

format() 함수에 반드시 name = value 로 값을 입력

>>> "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 3 days.'

 

- 정렬

:<10 : 전체 길이가 10인 문자열 공간에서 값을 왼쪽으로 정렬하고 나머지는 공백으로 처리

>>> "{0:<10}" . format("hi")
'hi        '

:>10 : 전체 길이가 10인 문자열 공간에서 값을 오른쪽으로 정렬하고 나머지는 공백으로 처리

>>> "{0:>10}". format("hi")
'        hi'

:^10 : 전체 길이가 10인 문자열 공간에서 값을 가운데로 정렬하고 나머지는 공백으로 처리

>>> "{0:^10}" . format("hi")
'    hi    '

 

- 공백 채우기

정렬할 때 공백 대신 지정한 문자로 대체

대체할 문자는 정렬 기호(>, ^, <) 앞에 입력하고, 한 글자만 가능

>>> "{0:=^10}" . format("hi")
'====hi===='
>>> "{0:!<10}" . format("hi")
'hi!!!!!!!!'

 

- 소수점 표현하기

>>> y = 3.42134234
>>> "{0:0.4f}" . format(y)
'3.4213'
>>> y = 3.42134234
>>> "{0:10.3f}" . format(y)
'    3.4213'
>>> y = 3.42134234
>>> "{0:010.4f}" . format(y)   # 공백을 0으로 채우기
'00003.4213'

 

③ f 문자열

- f 문자열 포맷팅

문자열 앞에 'f' 접두사를 붙여서 사용 (대소문자 모두 가능)

f'문자열' 형식 : 지정하고자 하는 데이터 값, 변수, 수식 등을 문자열 안에 중괄호 {}로 감싸 입력

>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
>>> f'나는 내년이면 {age + 1}살이 된다.'
'나는 내년이면 31살이 된다.'

 

- 정렬하기

>>> f'{"hi":<10}, Python'    # 왼쪽 정렬
'hi        , Python'
>>> f'{"hi":>10}, Python'    # 오른쪽 정렬
'        hi, Python'
>>> f'{"hi":^10}, Python'    # 가운데 정렬
'    hi    , Python'

 

- 공백 채우기

>>> f'{"hi":=^10}'    # 가운데 정렬하고 '=' 문자로 공백 채우기
'====hi===='
>>> f'{"hi":!<10}'    # 왼쪽 정렬하고 '!' 문자로 공백 채우기
'hi!!!!!!!!'

 

- 소수점 표현하기

>>> y = 3.42134234
>>> f'{y:0.4f}'    # 소수점 4자리까지만 표현
'3.4213'
>>> f'{y:10.4}'    # 소수점 4자리까지 표현하고 총 자리수를 10으로 맞춤
'    3.4213'
728x90
반응형