자료형 - 문자형 (String)

서리·2024년 8월 2일

파이썬

목록 보기
2/40
post-thumbnail

🔶 문자열 만들기

1️⃣ 큰 따옴표로 양쪽 둘러싸기

"Hello World"

2️⃣ 작은 따옴표로 양쪽 둘러싸기

'Python is fun'

3️⃣ 큰 따옴표 3개 연속으로 사용해서 양쪽 둘러싸기

"""Life is too short, You need python"""

4️⃣ 작은 따옴표 3개 연속으로 사용해서 양쪽 둘러싸기

'''Life is too short, You need python'''

🔶 문자열 내에 작은 따옴표 또는 큰 따옴표 포함하고 싶을 때

1️⃣ 문자열에 작은 따옴표 포함하기

Python's favorite food is perl
  • 위 문자열을 food 변수에 저장하려고 하면 큰 따옴표(””)로 둘러싸야 함
>>> food = 'Python's favorite food is perl'
  File "<stdin>", line 1
    food = 'Python's favorite food is perl'
                   ^
SyntaxError: invalid syntax
  • 위 문자열을 작은 따옴표로 둘러싸면 구문 오류 (SyntaxError) 발생

2️⃣ 문자열에 큰 따옴표 포함하기

"Python is very easy." he says.

>>> say = '"Python is very easy." he says.'
  • 위 문자열을 변수에 저장하고 싶다면 작은 따옴표(’’)로 둘러싸야 함

3️⃣ 역슬래시 사용해서 작은 따옴표, 큰 따옴표를 문자열에 포함하기

>>> food = 'Python\'s favorite food is perl'
>>> say = "\"Python is very easy.\" he says."
  • \’ 또는 \” 사용해서 문자 자체 의미함

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

1️⃣ 줄 바꾸기 위한 이스케이프 코드 (\n) 삽입

>>> multiline = "Life is too short\nYou need python"
  • 읽기 불편하고 줄이 길어지는 단점 있음

cf) 이스케이프 코드 (escape code)

  • 프로그래밍 시 사용할 수 있도록 미리 정의한 문자 조합
코드설명
\n문자열 내에서 줄바꿈
\t문자열 사이에 탭 간격 삽입
\\ 그대로 표현
\’작은 따옴표(’) 그대로 사용
\”큰 따옴표(”) 그대로 사용
\r캐리지 리턴 (줄 바꿈 문자, 커서를 현재 줄의 제일 앞으로 이동)
\f폼 피드 (줄 바꿈 문자, 커서를 현재 줄의 다음 줄로 이동)
\a벨 소리 (출력 시 스피커에서 삑 소리 남)
\b백 스페이스
\000널 문자

2️⃣ 연속된 작은 따옴표 3개 또는 큰 따옴표 3개 사용

// 작은 따옴표 3개 사용
>>> multiline='''
... Life is too short
... You need python
... '''
// 큰 따옴표 3개 사용
>>> multiline="""
... Life is too short
... You need python
... """

🔶 문자열 연산하기

1️⃣ 문자열 더하기

>>> head = "Python"
>>> tail = " is fun!"
>>> head + tail
'Python is fun!'
  • 문자열 연결

2️⃣ 문자열 곱하기

>>> a = "python"
>>> a * 2
'pythonpython'
  • 문자열 반복

3️⃣ 문자열 길이 구하기

>>> a = "Life is too short"
>>> len(a)
17
  • len() 함수 사용해서 구함
  • 파이썬 기본 내장 함수 ⇒ 별도 설정 없이 사용 가능

4️⃣ 문자열 인덱싱 (indexing)

>>> a = "Life is too short, You need Python"
>>> a[3]
'e'
  • 문자열 안의 특정한 값 뽑아냄
>>> a = "Life is too short, You need Python"
>>> a[0]
'L'
>>> a[12]
's'
>>> a[-1]
'n'

>>> a[-0]
'L'

>>> a[-2]
'o'
>>> a[-5]
'y'
  • a[-1]: 맨 뒤에서 첫번째 문자
  • 인덱스 값에 - 붙으면 뒤에서부터 계산

5️⃣ 문자열 슬라이싱 (slicing)

>>> a = "Life is too short, You need Python"
>>> a[0:4]
'Life'

>>> a[0:3]
'Lif'

0 <= a < 3
>>> a[0:2]
'Li'
>>> a[5:7]
'is'
>>> a[12:17]
'short'
>>> a[19:]
'You need Python'
  • 끝 번호 생략 ⇒ 시작 번호 ~ 문자열의 마지막까지 슬라이싱
>>> a[:17]
'Life is too short'
  • 시작 번호 생략 ⇒ 문자열의 시작 ~ 끝 번호까지 슬라이싱
>>> a[:]
'Life is too short, You need Python'
  • 시작, 끝 번호 생략 ⇒ 문자열의 시작 ~ 마지막까지 슬라이싱
>>> a[19:-7]
'You need'
  • 슬라이싱에서도 - 기호 사용 가능

🔶 문자열 포매팅

  • 문자열 내에 어떤 값 삽입하는 방식

1️⃣ 숫자 바로 대입

>>> "I eat %d apples." % 3
'I eat 3 apples.'
  • 숫자 넣고 싶은 자리에 %d 문자 넣고 삽입할 숫자는 맨 마지막 % 문자 뒤에 입력
  • 여기서 %d ⇒ ‘문자열 포맷 코드’라고 함

2️⃣ 문자열 바로 대입

>>> "I eat %s apples." % "five"
'I eat five apples.'
  • 문자열 넣고 싶은 자리에 %s 문자 넣고 삽입할 문자열은 맨 마지막 % 문자 뒤에 입력

3️⃣ 숫자 값 나타내는 변수로 대입

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

4️⃣ 2개 이상의 값 넣기

>>> 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.'
  • 마지막 % 다음 괄호 안에 ,로 구분해서 각각의 값 입력

5️⃣ 문자열 포맷 코드

코드설명
%s문자열 (string)
%c문자 1개 (character)
%d정수 (integer)
%f부동소수 (floating-point)
%o8진수
%x16진수
%%Literal % (문자 % 자체)
>>> "I have %s apples" % 3
'I have 3 apples'
>>> "rate is %s" % 3.234
'rate is 3.234'
  • %s 포맷 코드 ⇒ 어떤 형태의 값이든 변환해 삽입 가능
  • %s% 뒤의 숫자 값을 문자열로 바꿔 대입하므로 %d, %f 중 어떤 것을 사용해야하는지 구분하지 않아도 됨
>>> "Error is %d%." % 98

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: incomplete format
>>> "Error is %d%%." % 98
'Error is 98%.'
  • %와 포맷 코드가 함께 사용되었을 경우 ‘%’ 기호를 표현하기 위해서는 %%로 사용해야 제대로 출력됨

6️⃣ 문자열 포맷 코드와 숫자 함께 사용하기

✅ 정렬과 공백

>>> "%10s" % "hi"
'        hi'
  • 전체 문자열 공간 10개
  • 대입되는 문자열 오른쪽 정렬
  • 나머지 앞은 공백

Untitled

>>> "%-10sjane." % 'hi'
'hi        jane.'
  • 전체 문자열 공간 10개 + jane
  • hi 문자열 왼쪽 정렬
  • 나머지 뒤는 공백

Untitled

✅ 소수점 표현하기

>>> "%0.4f" % 3.42134234
'3.4213'
  • .: 소수점 포인트
  • 4: 소수점 뒤에 나올 숫자의 개수
  • %0.4f ⇒ 0 생략해 %.4f처럼 사용하기도 함
>>> "%10.4f" % 3.42134234
'    3.4213'
  • 숫자 3.42134234를 소수점 네번째 자리까지만 표시
  • 문자열 길이 10개인 공간에서 오른쪽 정렬

Untitled

✅ format 함수 사용한 포매팅

  • 문자열의 format 함수 사용 ⇒ 발전된 스타일로 문자열 포맷 지정 가능

✅ 숫자 바로 대입

>>> "I eat {0} apples".format(3)
'I eat 3 apples'
  • {0} 자리에 format 함수의 매개변수 대입

✅ 문자열 바로 대입

>>> "I eat {0} apples".format("five")
'I eat five apples'
  • {0} 자리에 format 함수의 매개변수 대입

✅ 숫자 값 가진 변수 대입

>>> number = 3
>>> "I eat {0} apples".format(number)
'I eat 3 apples'
  • {0} 자리에 format 함수의 매개변수 값 대입

✅ 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.'
  • {0}, {1} 같은 인덱스 항목 ⇒ format 함수의 입력값으로 바뀜

✅ 이름으로 넣기

>>> "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.'
  • 인덱스 항목 대신 {name} 형태 사용
  • {name} 형태 사용 시 format 함수에는 반드시 name = value 형태의 입력값 있어야 함

✅ 인덱스, 이름 혼용해서 넣기

>>> "I ate {0} apples. so I was sick for {day} days.".format(10, day=3)
'I ate 10 apples. so I was sick for 3 days.'
  • 인덱스 항목, {name} 형태 혼용 가능

✅ 왼쪽 정렬

>>> "{0:<10}".format("hi")
'hi        '
  • :<10
    • 치환되는 문자열 왼쪽 정렬
    • 문자열 전체 자리수 10개

✅ 오른쪽 정렬

>>> "{0:>10}".format("hi")
'        hi'
  • 0:>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'
  • format 함수 사용 ⇒ 소수점 4자리까지 표현
>>> "{0:10.4f}".format(y)
'    3.4213'
  • 문자열 전체 자리수 10으로 맞출 수 있음

{, } 문자 표현

>>> "{{ and }}".format()
'{ and }'
  • 중괄호 ({})를 포매팅 문자가 아닌 문자 그대로 사용 시 {{}}처럼 2개 연속 사용

7️⃣ f 문자열 포매팅

  • 파이썬 3.6 버전부터 사용 가능한 기능
  • 문자열 앞에 f 붙이면 사용 가능
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
  • 변수값 생성 후 해당 변수의 값 참조 가능
>>> age = 30
>>> f'나는 내년이면 {age + 1}살이 된다.'
'나는 내년이면 31살이 된다.'
  • f 문자열 포매팅 ⇒ 표현식 지원
  • 표현식: 중괄호 안의 변수를 계산식과 함께 사용
>>> d = {'name':'홍길동', 'age':30}
>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
  • 위의 코드처럼 딕셔너리 사용 가능
  • 딕셔너리: key, value를 한 쌍으로 가지는 자료형
>>> 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'
  • 소수점 표현

8️⃣ 문자열 관련 함수

✅ count: 문자 개수 세기

>>> a = "hobby"
>>> a.count('b')
2
  • 문자열 중 문자 ‘b’의 개수 리턴

✅ find: 위치 알려주기

>>> a = "Python is the best choice"
>>> a.find('b')
14
>>> a.find('k')
-1
  • 문자열 중 문자 ‘b’가 처음으로 나온 위치의 인덱스 값 반환
  • 찾는 문자나 문자열 존재하지 않는 경우 -1 반환

✅ index: 위치 알려주기

>>> a = "Life is too short"
>>> a.index('t')
8
>>> a.index('k')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
  • 문자열 중 문자 ‘t’가 처음 나온 위치의 인덱스 값 바놘
  • 찾는 문자나 문자열 존재하지 않는 경우 오류 발생

✅ join: 문자열 삽입

>>> ",".join('abcd')
'a,b,c,d'

✅ upper: 소문자를 대문자로 바꾸기

>>> a = "hi"
>>> a.upper()
'HI'

✅ lower: 대문자를 소문자로 바꾸기

>>> a = "HI"
>>> a.lower()
'hi'

✅ lstrip: 왼쪽 공백 지우기

>>> a = " hi "
>>> a.lstrip()
'hi '
  • 문자열 중 가장 왼쪽에 있는 한 칸 이상의 연속된 공백 모두 삭제

✅ rstrip: 오른쪽 공백 지우기

>>> a= " hi "
>>> a.rstrip()
' hi'
  • 문자열 중 가장 오른쪽에 있는 한 칸 이상의 연속된 공백 모두 삭제

✅ strip: 양쪽 공백 지우기

>>> a = " hi "
>>> a.strip()
'hi'

✅ replace: 문자열 바꾸기

>>> a = "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'
  • replace(바뀔 문자열, 바꿀 문자열)
  • 문자열 내의 특정 값을 다른 값으로 치환

✅ split: 문자열 나누기

>>> a = "Life is too short"
>>> a.split()
['Life', 'is', 'too', 'short']
>>> b = "a:b:c:d"
>>> b.split(':')
['a', 'b', 'c', 'd']
  • 괄호 안에 아무 값을 넣어주지 않는 경우 ⇒ 공백 (space, tab, enter) 기준으로 문자열 나눔
  • 괄호 안에 특정 값이 있는 경우 ⇒ 해당 값을 구분자로 문자열 나눔

💡 참고 사이트

profile
응애

0개의 댓글