Python #4 l 파이썬의 자료형_문자열 자료형(String)

신승호·2021년 2월 24일
0

Python

목록 보기
4/35
post-custom-banner

List

  • 파이썬의 자료형
    • 숫자형
    • 문자열 자료형
    • 리스트 자료형
    • 튜플 자료형
    • 딕셔너리 자료형
    • 집합 자료형
    • 불 자료형
    • 자료형의 값을 저장하는 공간
    • 변수

파이썬의 자료형_문자열 자료형(String)


문자열이란

문자열(String)이란 문자, 단어 등으로 구성된 문자들의 집합이며, 작은 따옴표(' ')큰 따옴표(" ") 로 둘러 쌓여있는 것은 전부 문자열이다. *숫자또한 따옴표에 둘러 쌓여있으면 문자열이 된다.

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

문자열의 구성 및 사용

문자열을 만들 때 사용하는 방법

  • 큰따옴표(")로 양쪽 둘러싸기
"Hello World"
  • 작은따옴표(')로 양쪽 둘러싸기
'Python is fun'
  • 큰따옴표 3개를 연속(""")으로 써서 양쪽 둘러싸기
"""Life is too short, You need python"""
  • 작은따옴표 3개를 연속(''')으로 써서 양쪽 둘러싸기
'''Life is too short, You need python'''

굳이 왜 여러가지 방법을 사용하나?

문자열 안에 작은따옴표나 큰따옴표를 써야할 때

  • 큰 따옴표 " " & 작은 따옴표 ' ' 사용
    문자열 안에 있는 따옴표 문자열을 변수를 저장하기 위한 따옴표가 같으면 안되는 것
>>>>food = "Python's favorite food is perl" **가능
>>>>food = 'Python's favorite food is perl' **오류
>>>> say = '"Python is very easy." he says.' **가능
>>>> say = ""Python is very easy." he says." **오류
  • 백슬래시 \ 사용
    반드시 문자열에 있는 따옴표 앞에 백슬래시 넣어라
>>>> food = 'Python\'s favorite food is perl' **가능
>>>> say = "\"Python is very easy.\" he says." **가능

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

  • 줄을 바꾸기 위한 이스케이프 코드 \n 사용
>>> multiline = "Life is too short\nYou need python"

>>> print(multiline) **이렇게 출력 될것
Life is too short
You need python
  • 큰 따옴표 3개""" """ & 작은 따옴표 3개''' ''' 사용
>>> multiline='''
Life is too short
You need python
'''
>>> multiline="""
Life is too short
You need python
"""

위 두개의 문자열은 동일하게 아래와 같이 출력 된다

>>> print(multiline)

Life is too short
You need python

이스케이프 코드?
프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 "문자 조합"
\n : 문자열 안에서 줄을 바꿀 때 사용(enter)
\t : 문자열 사이에 탭 간격을 줄 때 사용(tab)
\\ : 문자 ( \ )를 그대로 표현할 때 사용
\' : 작은따옴표( ' ) 를 그대로 표현할 때 사용
\" : 큰따옴표( " )를 그대로 표현할 때 사용

문자열 연산하기

문자열 연결시키기(Concatenation)

덧셈, 곱셈을 사용하여 문자열 연결 시킬 수 있다.

print('=' * 50)
print('shin' + ' is' + ' good')
print('=' * 50)

에디터 모드 사용

>>> 
==================================================
shin is good
==================================================

↑ 위의 값이 나옴

문자열 길이 구하기

len(a) 함수 사용 하여 문자열의 길이 구할 수 있다.

>>> a = "Life is too short"    
>>> len(a)
17     **이때 출력값은 공백칸까지 추가된것 (글자 수 는 14개)

문자열 인덱싱(Indexing)과 슬라이싱(Slicing)

※ 인덱싱과 슬라이싱은 리스트나 튜플에서도 사용할 수 있다.

  • 파이썬은 0부터 숫자를 센다

인덱싱(Indexing)

Life is too short, You need Python
0         1         2         3 
0123456789012345678901234567890123
  • a[] 을 가지고 값을 출력할 수 있고, 한글자만 가능
>>> a = "Life is too short, You need Python"
>>> a[0] ***앞에서부터 세어 첫 번째 문자를 출력
'L' 
>>> a[12]
's'
>>> a[-1] ***뒤에서부터 세어 첫 번째 문자를 출력
'n'  
  • 인덱싱을 아래와 같이 + 와 같이도 사용할 수 있다
>>> a = "Life is too short, You need Python"
>>> b = a[0] + a[1] + a[2] + a[3]
>>> b
'Life'

슬라이싱(Slicing)

  • a[시작 번호:끝 번호]
  • 시작 번호를 시작으로 끝 번호까지 출력
>>> a = "20010331Rainy"
>>> year = a[:4]
>>> day = a[4:8]
>>> weather = a[8:]
>>> year
'2001'
>>> day
'0331'
>>> weather
'Rainy'

슬라이싱으로 문자열 바꾸기

가변(mutable) : 값 변경 가능. **리스트, 딕셔너리 등이 해당
불변(immutable) : 값 변경 불가능 **문자열, 튜플 등이 해당

문자열의 경우 값 변경 불가함, 하지만 아래와 같이 슬라이싱을 사용하여 변경 할수도 있음

>>> a = "Pithon"
>>> a[:1]
'P'
>>> a[2:]
'thon'
>>> a[:1] + 'y' + a[2:]
'Python'

문자열 포메팅(formatting)

문자열 포매팅 코드
%s : 문자열(String)
%c : 문자 1개(character)
%d : 정수(Integer)
%f : 부동소수(floating-point)
%% : Literal % (문자 % 자체)

숫자 대입

  • '~ %d ~.' % 정수
  • '~ %f ~.' % 실수
>>> "I eat %d apples." % "5"
'I eat 5 apples.'
>>> "I eat %f apples." % "5.5"
'I eat 5.5 apples.'

문자 대입 %s

※ 문자열을 대입할 때는 큰따옴표나 작은따옴표를 문자열에 맞게 반드시 써주어야 된다악
※이 코드는 어떤 형태의 값이든 변환해 넣을 수 있다.

  • 이렇기 때문에 정수, 실수 전부 %s로 받으면 그대로 가져올 수 있다 이때 따옴표는 안써도 됌
    • '~ %s ~.' % '문자'
>>> "I eat %s apples." % "five"
'I eat five apples.'

변수 대입

※ 변수를 대입할 때 숫자나 문자 전부 따옴표를 쓸 필요 없다

  • 숫자값 변수 대입
  • '~ %d ~.' % 변수
>>> number = 3
>>> "I eat %d apples." % number 
'I eat 3 apples.'
  • 문자값 변수 대입 %s 사용
  • '~ %s ~.' % 변수
>>> f = 'five'
>>> 'I eat %s apples.' % f
'I eat five apples.'

두개이상 대입

**문자와 숫자가 제대로 입력이 안되어 있음 출력이 안되겠지

  • '~ %d~ %s ~.' % (변수,변수)
>>> number = 10 
>>> day = "three"
>>> "I ate %d apples. so I was sick for %s days." % (number, day) 
'I ate 10 apples. so I was sick for three days.'

'%' 대입

  • '~%d%% ~.' % 정수
  • %d같은 연산자가 없음 그냥 %쓰면 되용
>>> "Error is %d%%." % 98
'Error is 98%.'

포맷 코드와 숫자 함께 사용

정렬과 공백

  • 숫자 앞 -의 존재 유무로 정렬 달라짐(-면 왼쪽, 없으면 오른쪽)
  • 공백을 남겨두라는 의미
  • 소숫점 표현
1. 오른쪽 정렬, 앞 공백10칸, 소숫점 4자리까지
>>> "%10.4f" % 3.42134234
'    3.4213'

** "%10.4f" 의 이미
- `-`가 아님 -> 오른쪽 정렬
- `10.4`중 `10` -> 대입되는 숫자의 앞에 공백 10칸 남기기
- `10.4`중 `.4` -> 소숫점 4자리 (실수이기 때문에`%f` 사용)

2. 왼쪽 정렬, 뒷 공백 10칸, 소숫점 없음
>>> "%-10sjane." % 'hi'
'hi        jane.'

** "%-10sjane" 의 이미
- `-`가 맞음 -> 왼쪽 정렬
- `10`중 `10` -> 대입되는 숫자의 뒤쪽에 공백 10칸 남기기
- `10`중 소숫점 없음( 소숫점 없고 문자열이기 때문에 '%s' 사용)

format 함수 포메팅(formatting)

문자열의 format 함수를 사용하여 좀 더 발전된 스타일로 문자열 포멧을 지정할 수 있다.

기본 구조 '~ {0} ~.'.format()

  • 숫자 대입
    format() 여기서 괄호 안에 따옴표 쓸필요 없어
>>> "I eat {0} apples".format(3) 
'I eat 3 apples'
"I eat {0} apples" 문자열 중 {0} 부분이 숫자 3으로 바뀌었다.
  • 문자 대입
    format() 여기서 괄호 안에 따옴표 맞춰서 잘 써야해
>>> "I eat {0} apples".format("five")
'I eat five apples'
문자열의 {0} 항목이 five라는 문자열로 바뀌었다.
  • 변수 대입
    format() 여기서 괄호 안에 따옴표 쓸 필요 없다
>>> number = 3
>>> "I eat {0} apples".format(number)
'I eat 3 apples'
  • 2개 이상의 값 대입
  • 기본구조는 "~{0} ~ {1} ~.".format( , )
  • 또한 문자열 안에 계속 대입 가능
1. 2개 이상 값 대입하기
>>> '{0}{1}{2}'.format('shin',' is', ' good')
'shin is good'

2. 변수로 2개 이상 대입하기
>>> s = 'shin'
>>> i = ' is'
>>> g = ' good'
>>> '{0}{1}{2}'.format(s, i, g)
'shin is good'

3. 인덱스가 아닌 이름으로 대입하기
>>> '{s}{i}{g}'.format(s='shin', i=' is', g = ' good')
'shin is good'

4. 인덱스와 이름 혼용
>>> s = 'shin'
>>> i = ' is'
>>> g = ' good'
>>> '{0}{1}{g}'.format(s, i, g = ' good')
'shin is good'

정렬

  • 기본구조 :> :< :^ 사용
1. 오른쪽 정렬
>>> "{0:>10}".format("hi")
'        hi'

↑ **{0:>10} 의미
- 0부분 - 인덱싱 넘버
- :>부분 - 오른쪽 정렬
- 10 - 앞쪽으로 공백 10칸

2. 왼쪽 정령
>>> "{0:<10}".format("hi")
'hi        '

↑ **{0:<10} 의미
- 0부분 - 인덱싱 넘버
- :<부분 - 왼쪽 정렬
- 10 - 뒷쪽으로 공백 10칸

소숫점 표현

  • 기본구조 {:0.1f}'.format() 사용
>>> y = 3.42134234
>>> "{0:>10.4f}".format(y)
'    3.4213'
>>> "{0:<10.4f}".format(y)
'3.4213    '

{ } 문자로 표현

  • 기본구조 그냥 문자열 내 2개씩 사용해서{{ }}이렇게 쓰면 됌
>>> "({{shin}}{0})".format('shin')
'({shin}shin)'

문자열 관련 함수

  • 파이썬 내 문자열의 내장함수
  • 기본구조 변수이름.함수()
  • ~.count() : 문자 개수 세기
>>a = 'shin' 
>>a.count('s') # 문자열 중 s의 개수 출력
1
  • ~.find() : 위치 알려주기
>> a = 'shin'
>> a.find('s') # 문자열 중 문자 s 가 처음으로 나온 위치 출력
0 # 파이썬은 0부터 세기 때문에 h 는 0임
  • ~.index() : 위치 알려주기
    index에서는 find와 달리 문자열 안에 존재하지 않는 문자를 찾으면 오류가 발생한다.
>> a = 'shin'
>> a.index('s') # 문자열 중 문자 s 가 처음으로 나온 위치 출력
0 # 파이썬은 0부터 세기 때문에 h 는 0임
  • ~.join() : 문자열 삽입
>>",".join('shin') #shin 문자열 각각의 문자 사이에 `,`삽입
's,h,i,n' 
>> ",".join(['a', 'b', 'c', 'd']) # 리스트와 튜플에서도 사용 가능
'a,b,c,d'
  • ~.upper() : 대문자 만들기
>> a = 'shin'
>> a.upper()
'SHIN'
  • ~.lower() : 소문자 만들기
>> a = 'SHIN'
>> a.lower()
'shin'
  • ~.lstrup() : 왼쪽 공백 지우기
>> a = ' shin '
>> a.lstrup()
'shin '
  • ~.rstrup() : 오른쪽 공백 지우기
>> a = ' shin '
>> a.rstrup()
' shin'
  • ~.strup() : 양쪽 공백 지우기
>> a = ' shin '
>> a.strup()
'shin'
  • ~.replace() : 문자열 바꾸기
>> a = 'shin is stupid '
>> a.replace('stupid', 'smart') #stupid -> smart 로 바꾸란 말이당
'shin is smart'
  • ~.split() : 문자열 나누기
>> a = 'shin is smart'
>> a.split()
['shin', 'is', 'smart']-> 공백으로 문자열 나눔
>> a = 'shin_is_smart'
>> a.split('_') #이때 공백이 아닐 때 에는 따옴표 붙혀라..
['shin', 'is', 'smart']
>> a.split('s')
['', 'hin_i', '_', 'mart']
profile
신승홉니다
post-custom-banner

0개의 댓글