Python/개념

02. [Python] 자료형 - 문자열

프로그린 2024. 4. 14. 18:56

문자열 생성 방법

  • 큰따옴표(")로 감싸기
  • 작은 따옴표(')로 감싸기
"This is String"
'This is String'

 

따옴표가 포함된 문자열 생성

  • 큰 따옴표가 포함된 문자열은 작은 따옴표로 감싸기
  • 작은 따옴표가 포함된 문자열은 큰 따옴표로 감싸기
  • 따옴표 앞에 역슬래시를 함께 쓰면 문자열을 생성하는 기호와 구분됨
'He said. "I love you"'
"He said. 'I love you'"
"He said. \"I love you\""

 

이스케이프 코드

코드설명입력 예시출력 예시
\n줄바꿈print('처음\n끝')처음
\t탭 간격print('처음\t끝')처음    끝
\\문자 그대로의 \print('처음\\끝')처음\끝
\'문자 그대로의 'print('처음\'끝')처음'끝
\"문자 그대로의 "print('처음\"끝')처음"끝
\r캐리지 리턴(줄 바꿈, 커서를 현재 줄의 가장 앞으로 이동)print('처음\r끝')끝음
\b백 스페이스print('처음\b끝')처끝
\000Null 문자print('처음\000끝')처음끝

 

문자열 포매팅

문자열 포맷 코드

코드설명입력 예시출력 예시
%s문자열(String) '내 이름은 %s'%'캔디''내 이름은 캔디'
%c문자 1개(character)'%c요일에 만나요'%'금''금요일에 만나요'
%d정수(Integer)'%d세 미만 관람불가'%15'15세 미만 관람불가'
%f부동소수(floating-point)'%f'%(1/3)0.333333
%o8진수'%o'%3240
%x16진수'%x'%3220
%%문자 % 자체 '전품목 10%% 할인''전품목 10% 할인'
여러 값의 입력과 소수점 이하 자릿수 표현
- 2개 이상의 값을 넣으려면 마지막%다음 괄호 안에 쉼표(,)로 구분하여 입력
- f 앞에 온점(.) 과 나타내려는 소수점이하 자릿수를 입력하면 소수점 이하 자릿수 설정 가능
'2022년 %s 지역 인구는 %.2f만 명 입니다.'%('서울', 966.7669)
>>> '2022년 서울 지역 인구는 966.77만 명 입니다.'
정렬과 공백
- %와 포맷코드 사이에 양수를 입력하면 숫자만큼의 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고 나머지는 공백으로 채움.
- %와 포맷코드 사이에 음수를 입력하면 숫자만큼의 문자열 공간에서 대입되는 값을 왼쪽으로 정렬하고 나머지는 공백으로 채움.
'%10s'%'오른쪽정렬'
>>> '     오른쪽정렬'
'%-10s'%'왼쪽정렬'
>>> '왼쪽정렬      '

 
format 함수를 사용한 포매팅

  • {}안에 변수 또는 인덱스를 넣어서 표현
'{school}초등학교 {grade}학년 {class_no}반'.format(school='한국', grade=1, class_no=2)
>>> '한국초등학교 1학년 2반'
'{0}초등학교 {2}학년 {1}반'.format('한국',1, 2)
>>> '한국초등학교 2학년 1반'
정렬과 공백
- 0:<10 : 전체 길이가 10개인 문자열 공간에서 대입되는 값을 왼쪽으로 정렬하고 나머지는 공백으로 채움.
- 0:>10 : 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고 나머지는 공백으로 채움.
- 0:^10 : 전체 길이가 10개인 문자열 공간에서 대입되는 값을 가운데로 정렬하고 나머지는 공백으로 채움.
'{0:<10}'.format('왼쪽정렬')
>>> '왼쪽정렬      '

'{0:>10}'.format('오른쪽정렬')
>>> '     오른쪽정렬'

'{0:^10}'.format('가운데정렬')
>>> '  가운데정렬   '

'{0:@<10}'.format('공백채우기')
>>>'공백채우기@@@@@'

'{0:!<10}'.format('공백채우기')
>>> '공백채우기!!!!!'
소수점 이하 자릿수 표현 : {0:0.xf}
'{0:0.2f}'.format(3.141592)
>>> '3.14'

'{0:10.2f}'.format(3.141592)
>>> '      3.14'

 

f문자열 포매팅(파이썬 3.6 버전 이상)

  • 문자열 앞에 f 기재 후 {}안에 입력할 문자나 변수 입력
name = '철수'
age = 19
f'{name}는 내년에 {age+1}살이 된다.'
>>> '철수는 내년에 21살이 된다.'

x = 0.12345
f'{x:.4}f'
>>> 0.1235

 

문자열 내장 함수

함수기능입력 예시
(a = 'HeLLo'
b = '    hi    ')
출력 예시
count문자열 중 문자의 개수 리턴 a.count('L') 2
find문자열 중 문자가 처음으로 나온 위치를 반환a.find('L')2
index 문자열 중 문자가 처음으로 나온 위치를 반환 a.index('L') 2
join문자열의 각 문자 사이에 해당 문자를 삽입'!'.join('12345') '1!2!3!4!5'
upper소문자를 대문자로 변환a.upper()'HELLO'
lower대문자를 소문자로 변환a.lower()'hello'
lstrip왼쪽 공백 제거b.lstrip() 'hi    '
rstrip오른쪽 공백 제거 b.rstrip() '    hi'
strip양쪽 공백 제거 b.strip()'hi'
replace문자열 바꾸기a.replace('e', 'eeee') 'HeeeeLLo'
split문자열 나누기a.split('L')['He', '', 'o']
find와 index의 차이
찾으려는 값이 리스트 내에 없으면 find는 -1을 반환하지만 index는 오류가 발생
str_1 = 'apple'
str_1.find('b')
>>> -1
str_1.index('b')
>>> ValueError: substring not found​
- 내장함수를 이용하면 변경된 값을 리턴 하지만 문자열 자체의 값이 변경되는 것은 아님.
- 변경된 값을 적용하려면 변수에 값을 할당해야 함
str_1 = 'Today is Sunday'
str_1.replace('Sunday', 'Monday')
print(str_1)
>>> Today is Sunday

str_2 = str_1.replace('Sunday', 'Monday')
print(str_2)
>>> Today is Monday​