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끝') | 처끝 |
\000 | Null 문자 | print('처음\000끝') | 처음끝 |
문자열 포매팅
문자열 포맷 코드
코드 | 설명 | 입력 예시 | 출력 예시 |
%s | 문자열(String) | '내 이름은 %s'%'캔디' | '내 이름은 캔디' |
%c | 문자 1개(character) | '%c요일에 만나요'%'금' | '금요일에 만나요' |
%d | 정수(Integer) | '%d세 미만 관람불가'%15 | '15세 미만 관람불가' |
%f | 부동소수(floating-point) | '%f'%(1/3) | 0.333333 |
%o | 8진수 | '%o'%32 | 40 |
%x | 16진수 | '%x'%32 | 20 |
%% | 문자 % 자체 | '전품목 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