[Python] 문자열 자료형

Inah-_-·2021년 1월 28일
0

Python

목록 보기
2/21
post-thumbnail



# 자료형(Python data type)

프로그래밍에 사용되는 숫자, 문자열 등 자료형태의 모든 것,
Python의 자료형은 정수, 실수, 문자, 논리형 등의 기본 자료형 형태를 처리한다.

숫자형, 문자형, 논리형에 이어서



# 문자열 자료형

\를 사용하여 '" 문자열에 포함시키는 법

>>> code = "I \'like' Python"
>>> code
"I 'like' Python"

작은따옴표 ' '나 큰따옴표 " "를 문자열에 포함시키는 또 다른 방법에는
백슬래시(\)를 작은따옴표 ' '나 큰따옴표" " 앞에 삽입하면 \ 뒤에오는 ' '" "는 문자열을 둘러싸는 기호의 의미가 아닌 문자 그 자체를 뜻하게 된다.



여러 줄의 문자열을 변수에 대입할 때

작은따옴표 3개''' 또는 큰따옴표 3개""" 사용

>>> multiline='''    #작은따옴표를 사용한 경우
Nice to meet you
Where you been
I could show you incredible things
'''

>>> print(multiline)
Nice to meet you
Where you been
I could show you incredible things


>>> multiline="""	#큰따옴표를 사용한 경우
Magic madness heaven sin
Saw you there and I thought oh my god
"""

>>> print(multiline)
Magic madness heaven sin
Saw you there and I thought oh my god


문자열 연산

1. 문자열 더하기

>>> tall = "Hello"
>>> venti = "world!"
>>> tall + venti
'Helloworld!'

Hello라는 tall의 변수와 world!라는 venti의 변수가 합쳐진 것

2. 문자열 곱하기

>>> a = "Python is fun!"
>>> a * 5
'Python is fun!Python is fun!Python is fun!Python is fun!Python is fun!'

3. 문자열 길이 구하기

>>> a = "Helloworld!"
>>> len(a)
11

len함수는 print함수와 같이 Python의 기본 내장 함수로 별다른 작업 없이 바로 사용할 수 있다.



# 문자열 인덱싱과 슬라이싱

Indexing과 Slicing은 문자열 뿐만 아니라 list, tuple에서도 사용할 수 있다.

# 인덱싱(Indexing, 가리키다)

변수의 문자열 특정 요소가 몇 번째에 있는지 알 수 있다. 띄어쓰기를 포함한 문자열의 모든 문자가 인덱스에 포함된다.

>>> str ="Nice to meet you"
>>> print(str[0], str[8])
N m

>>> print("str의 index 0번째 문자는 " + str[0] + "입니다.")
str의 index 0번째 문자는 N입니다.	#Python의 숫자는 0부터 시작된다.

문자열의 끝 글자부터 음의 정수 번호를 매겨 값을 가져올 수 있는데,

>>> str ="Nice to meet you"
>>> print(str[-3], str[-2], str[-1])
y o u

str[-1] 즉, str[0]을 기준으로 -1을 의미한다.
str의 값은 "Nice to meet you" 이므로, str[0]N을 기준으로 -1은 u이다.



# 슬라이싱(Slicing, 잘라내다)

인덱싱이 "Nice to meet you"의 한 요소의 값만 낼 수 있었다면, 슬라이싱은 0부터 번호의 값을 매겨 원하는 위치의 요소까지 값을 가져올 수 있다.

변수명[시작(start):끝(stop):간격(step)]

  • start를 입력하지 않으면 0을 입력한 것과 같다.
  • stop을 입력하지 않으면 len(a)함수를 사용한 것과 같다.
  • step을 입력하지 않으면 1을 입력한 것과 같다.
>>> slicing = "123456789"
>>> slicing[1:9]	#앞에서 1개의 요소만 제외하는 것과 같다.
'23456789'

>>> slicing[0:7]	#앞에서 7개의 요소만 선택하는 것과 같다.
'1234567'

>>> slicing[3:7]	#앞에서 7개의 요소를 선택하고 선택한 값의 앞에서 3개를 제외하는 것과 같다.
'34567'

슬라이싱으로 문자열 나누기

>>> slicing = "Cos ah ah I’m in the stars tonight!"
>>> slicing[0:9]
'Cos ah ah'

>>> slicing[10:20]
'I'm in the'

>>> slicing[21:0]
'stars tonight!'


# 문자열 포매팅

문자열 내의 특정한 값을 바꿔야 할 경우가 있을 때 사용한다.
Python 3.6 f문자열 포매팅
f문자열 포매팅은 변수 값을 생성한 후에 그 값을 참조할 수 있다.
f'문자열{변수} 문자열

>>> name = "라라"
>>> age = 2

>>> print (f"안녕하세요! 제 고양이 이름은 {name}이고, 나이는 {age}살 입니다.")
안녕하세요! 제 고양이 이름은 라라이고, 나이는 2살 입니다.

f문자열 포매팅 표현식

>>> age = 2
>>> print (f"제 고양이 이름은 {name}이고, 내년에 {age+1}살이 됩니다.")

제 고양이 이름은 라라이고, 내년에 3살이 됩니다.


# 문자열 함수

count, find, index, join, upper, lower, strip, replace, split

.count - 문자 개수 값

>>> a = "pingpong"
>>> a.count('p')
2

.find - 문자 위치 값

>>> a = "pingpong"
>>> a.find('g')
3
>>> a.find('a')    # 찾는 문자가 존재하지 않을 경우 -1을 반환한다.
-1

.index - 문자 위치 값2

find는 찾는 문자가 존재하지 않을 경우 -1을 반환하는 반면,
index는 찾는 문자가 존재하지 않을 경우 오류가 발생한다.

>>> a = "So I’mma light it up like dynamite"
>>> a.index('l')
9

>>> a.index('r')	# 찾는 문자가 존재하지 않을 경우
Traceback (most recent call last):
  File "<pyshell#75>", line 1, in <module>
    a.index('r')
ValueError: substring not found

.join - 문자열 삽입

>>> a = "Python"
>>> print(','join(a) )

P,y,t,h,o,n

.upper - 소문자->대문자 :lower - 대문자->소문자

>>> a = "Hello, it's me"	#string:upper
>>> a.upper()
"HELLO, IT'S ME"

>>> a.lower()	#string:lower
"hello, it's me"

.strip - 문자열 공백 지우기

>>> a = " apple "
>>> a.strip()	#양쪽 공백을 지울 경우
'apple'

>>> a.lstrip()	#왼쪽 공백을 지울 경우 'l'strip > left를 의미
'apple '

>>> a.rstrip()	#오른쪽 공백을 지울 경우 'r'strip > right를 의미
' apple'

.replace - 문자열 바꾸기

replace함수는 문자열에만 사용 가능한 함수이다.

변수.replace("old","new",[count])

  • old : 현재 문자열에서 변경하려는 문자
  • new : 새로 변경할 문자
  • count : 변경할 횟수, 횟수를 입력하지 않으면 old 문자열 전체를 변경한다.
>>> a = "Hello everyone!"
>>> a.replace("Hello","Hi")
'Hi everyone!'
>>> "Dynnnnnanana, life is dynamite".replace("dynamite","python")	#변수를 지정하지 않고 문자열에 바로 replace 함수를 사용할 경우
'Dynnnnnanana, life is python'
"xoxoxoxoxoxoxo, inah".replace("xo","♥",2)	#시작하는 "xo" 문자를 2번 ♥로 변경
'♥♥xoxoxoxoxo, inah'

.split - 문자열 나누기

문자열의 특정 문자를 기준으로 삼아 리스트의 요소로 지정된다.

  • sep : 문자열을 나눌 기준을 입력한다. 기본값은 공백이다.
  • maxsplit : 문자를 나눌 최대 분할 수 기본값은 -1(제한 없음) maxsplit에 값을 설정하지 않으면 문자 전체를 나누게 된다.
>>> a = "Dynnnnnanana eh"
>>> a.split()
['Dynnnnnanana', 'eh']	#기본값

>>> b = "Hello, my name is Inah!"
>>> print(b.split(sep=','))		#','을 기준으로 분할
['Hello', ' my name is Inah!']

>>> print(b.split(maxsplit=4))	#공백을 기준으로 4번 분할
['Hello,', 'my', 'name', 'is', 'Inah!']




profile
Backend Developer

0개의 댓글