본문 바로가기
Tech Stack/Python

문자열 & 리스트

by jaeaemin 2021. 7. 20.

문자열 (STRING)

 

문자열 선언 방식
  • 1. 큰따옴표로 양쪽을 둘러싸는 방식  “hello”
  • 2. 작은 따음표로 양쪽을 둘러싸는 방식 ‘hell’
  • 3. 큰따옴표 3개를 연속으로 양쪽 둘러싸기 “”“hello hell”””
  • 4. 작은따옴표 3개 연속 양쪽 둘러싸기 ‘’’hello hell’’’

큰,작은 따옴표가 활용되는 이유는 문장 사이에 따옴표가 사용될 때 다른 따옴표를 통해 문자열을 선언할 수 있기 때문이다.

다른 방법으로는 백슬래시를 앞에 추가하여 사용할 수 있다.

ex) ‘ Python\’s very easy’

 

 

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

  • \n을 활용하기
  •  ‘’’ ‘’’, “”” “””를 사용하기 줄을 구분하여 저장 가능하게 한다.

이 때 백스페이스를 활용하여 코드를 사용하는 것을 이스케이프 코드라고 한다. 

\r, \n, \a, \f .. 등등

 

 

문자열 연산 
  • 더하기를 통한 연산        head = ‘a’ / tail = ‘b’  =>    head + tail = ‘ab’
  • 곱하기를 통한 연산        head = ‘ab’  =>     a * 3 = ‘ababab’
  • 문자열 길이 구하기        head = ‘abc’  =>    len(head) = 3

 

문자열 인덱싱

0부터 시작하여 해당 자리에 대한 문자 번호를 나타낸다.

변수[ index ] = 해당 자리의 문자값을 반환한다 

여기서 -는 뒤에서 부터 읽어옵니다. 이 경우에는 -1부터 시작한다. a[0] == a[-0]

 

문자열 슬라이딩 

문자열을 쪼개서 나타낸다. 

ex)    A = ‘life is what the fuck”     A[0:4]  => life 

 

여기서 문자열의 요소값은 바꿀 수 있는 값이 아니다 (immutable한 자료형)

슬라이싱을 통해 수정이 가능하긴 하다.

(ex) A[:1] + ‘y’ + a[2:] 

 

파이썬의 대부분은 객체로 그 속성이 mutable 과 immutable로 구분된다.

immutable = 숫자, 문자열, 튜플

mutable = 리스트, 딕셔너리, numpy 배열 

immutable은 변경 불가능한 객체로 값이 변경되는 것이 새로운 객체 생성을 의미해서 변경이 일어날 때 기존 객체는 변하지 않눈다.

mutable은 변경 가능한 객체로 값의 변경이 일어날 때 주소가 참조하는 값이 모두 변경되는 것을 확인 할 수 있다.

즉 immutable은 직접 값이 변경되는 deep copy이고, 반면 mutable은 shallow copy 즉 내부적으로 포인터만 복사를 적용한다. 

이때 비교 연산자로 객체의 값과 포인터를 비교하는 것은 아래와 같이 분류할 수 있다.

is    내부적으로 유지하는 포인터 값을 비교한다.

==  구성하는 성분을 비교한다.

 

◾️불변객체(immutable)를 사용하는 이유는?

불변객체는 외부에서 임의로 내부의 값을 제어할 없기 때문에 객체의 자율성이 보장되고, 프로그램 내에서 변하지 않는 고정된 부분이 많아짐으로써 프로그램 안정도를 높일 있다.

>>> a = "hello"
>>> b = ["hello", "python"]

a의 경우에는 문자열이기 때문에 불변객체로 'hello'라는 문자열 그 자체를 가리키고 있다.

b의 경우는 가변객체로 [0]이 'hello'를 가리키는 주소를 포함하고 있고 [1]의 경우 'python'이라는 문자열을 가리키는 주소를 포함하여 객체를 가리키는 방향을 교체한다면 주소가 가리키는 내용 즉 객체를 변경 할 수 있다

 

 

문자열 포맷

 

  • 기본 포맷 

1.숫자 바로 대입 

 >>> “ I eat %d apples. “ %3 => I eat 3 apples 

2. 문자열 숫자 바로 대입

 >>> “ I eat %s apples.” %”five”    =>  I eat five apples 

3. 2개 이상의 값 넣기 

 >>> number = 10

 >>> day = "three"

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

 

 

  • 포맷 코드 + 숫자

1. 정렬과 공백 

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

 10개의 문자열 공간에 대입되는 값을 오른쪽으로 정렬하고 앞의 내용은 공백으로 처리한다.

>>> "%-10s Jane" % "hi" 

  반대쪽으로 정렬하기 위해서는 -로 처리한다.

 

 

2. 소수점 표현하기

>>> "%0.4f" % 3.4213423   ==>    '3.4213'

3.42134234 소수점 번째 자리까지만 나타내고 싶은 경우에는 위와 같이 사용한다. 여기서 '.' 의미는 소수점 포인트를 말하고 뒤의 숫자 4 소수점 뒤에 나올 숫자의. 개수를 말한다. 다음 예를 살펴보자.

 

>>> "%10.4f" % 3.42134234     ==>    '    3.4213'

예는 숫자 3.421342 소수점 번째 자리까지 표시하고 전체 길이가 10개인 문자열 공간에서 오른쪽으로 정렬하는 예를 보여 준다.

 

 

  • Format 함수를 사용한 포맷팅

1. 숫자 바로 대입하기 

>>> "I eat {0} apples".format(3)         ==>      'I eat 3 apples'

2. 문자열 바로 대입하기

 >>> "I eat {0} apples".format("five")     ==>    'I eat five apples'

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

OR

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

 

4. 정렬 

        1. 총 자릿수를 10개로 맞추고 왼쪽 정렬 >>> "{0:<10}".format("hi") 'hi              '

        2. 총 자릿수를 10개로 맞추고 오른쪽 정렬         >>> "{0:>10}".format("hi")

        3. 총 자릿수를 10개로 맞추고 가운데 정렬 >>> "{0:^10}".format("hi")

                     > , ^ 앞에 문자를 설정하면 공백 대신 문자로 채워진다.   >>> "{0:=^10}".format("hi")         '====hi===='

 

5. 소수점 표현하기

>>> y = 3.42134234              

>>> "{0:0.4f}".format(y)           '3.4213' 

>>> "{0:10.4f}".format(y)        '    3.4213'

 

 

  • F string

다음과 같이 문자열 앞에 f 접두사를 붙이면 f 문자열 포매팅 기능을 사용할 있다.

>>> name = '홍길동'

>>> age = 30

>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.' '나의 이름은 홍길동입니다. 나이는 30입니다.'

 

또한 fstring은 표현식을 지원한다. 

>>> f'나는 내년이면 {age+1}살이 된다.'            '나는 내년이면 31살이 된다.'

 

딕셔너리 사용하기 

 d = {'name':'홍길동', 'age':30}

>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'         '나의 이름은 홍길동입니다. 나이는 30입니다.'

 

정렬은 다음과 같이 있다.

>>> f'{"hi":<10}'  # 왼쪽 정렬 'hi        '

>>> f'{"hi":>10}'  # 오른쪽 정렬 '        hi'

>>> f'{"hi":^10}'  # 가운데 정렬 '    hi    '

 

공백 채우기는 다음과 같이 있다.

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

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

 

소수점은 다음과 같이 표현할 있다.

>>> y = 3.42134234

>>> f'{y:0.4f}'  # 소수점 4자리까지만 표현 '3.4213'

>>> f'{y:10.4f}'  # 소수점 4자리까지 표현하고 자리수를 10으로 맞춤 '    3.4213'

 

 

  • 문자열 관련 함수

count = 문자 세기

find = 위치 알려주기 (인덱스)

join = 문자열 삽입

upper = 대문자 변환

Lower = 소문자 변환

Lstrip = 왼쪽 공백 제거

rstrip = 오른쪽 공백 제거

strip = 양쪽 공백 제거

 

반응형

'Tech Stack > Python' 카테고리의 다른 글

파일  (0) 2021.07.27
함수  (0) 2021.07.26
반복문 ( for , while )  (0) 2021.07.24
집합 & 불 자료형  (0) 2021.07.21
튜플 & 딕셔너리  (0) 2021.07.20