순서
1. 문자열의 정의와 표현
2. 문자열 연산하기
3. 문자열 인덱싱과 슬라이싱
4. 문자열 포메팅 (format)
5. 문자열 관련 함수
1. 문자열의 정의와 표현
문자, 단어 등으로 구성된 문자들의 집합.
따옴표로 둘러싸여 있으면 모두 문자열이라고 보면 된다.
1. 문자열 표현 방법
>>> a = "Hi"
>>> a = 'Hello'
>>> a = """Bye"""
>>> a = '''12345'''
2. 문장 내 따옴표를 사용하기 위한 방법
>>> a = "I'm jin."
>>> a = '"jin.". He says.'
>>> a = 'I\'m jin.'
>>> a = "\"jin.\". He says."
3. 여러 줄인 문자열을 변수에 대입하는 법
>>> a = "Hi,jin. \n He says."
>>> a = """
Hi,jin.
He says.
"""
>>> print(a) # 3번의 출력 결과
Hi,jin.
He says.
1. 마지막 경우, 숫자로 따옴표로 쌓여 있다면 문자열이 된다.
2. 내부의 원하는 따옴표를 사용하고 싶다면,
첫번째 두번째처럼 감싸는 따옴표를 다른 따옴표를 사용하거나
세번째 네번째처럼 ' \ ' 백슬래시를 사용하여 내부의 따옴표를 그 자체로 사용하게 한다.
3.
\n (이스케이프 코드) 를 사용하여 줄을 바꿀 수도 있지만
두번째처럼 """ , ''' 를 사용하여 표현하는 게 훨씬 깔끔하게 표현이 가능하다.
※참고
이스케이프 코드 : 프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 코드
이스케이프 문자 | 역할 |
\n | 새로운 줄로 이동 (Enter) |
\t | 다음 탭으로 이동 (Tab) |
\b | 뒤로 한 칸 이동 (Backspace) |
\\ | \ 출력 |
\' | ' 출력 |
\" | " 출력 |
Python은 JavaScript와는 다르게 문자열에서 백틱(`) 자체를 쓰지 않는다.
2. 문자열 연산하기
1. 문자열 더하기
>>> A = "My name"
>>> B = " is jin"
>>> A+B
"My name is jin"
2. 문자열 곱하기
>>> A = "My name"
>>> A*2
"My nameMy name"
>>> print("=" * 50)
>>> print("Hello")
>>> print("=" * 50)
=============================================
Hello
=============================================
3. 문자열 길이 구하기
>>> A = "My name is jin"
>>> len(A)
14
1. 문자열은 예시처럼 더하기가 가능하다.
2. 문자열은 예시처럼 곱하기가 가능하다. 두번째처럼 응용하면 보기 이뻐진다.
3. len() 이라는 함수는 기본 내장 함수로 문자열의 전체 길이를 구할 수 있다.
3. 문자열 인덱싱과 슬라이싱
인덱싱(Indexing)이란 무엇인가를 "가리킨다"는 의미이고, 슬라이싱(Slicing)은 무엇인가를 "잘라낸다"는 의미.
>>> a = "Life is wonderful"
위의 Life is wonderful 을 왼쪽부터 띄어쓰기까지 포함해서
01234 순서대로 숫자를 매칭을 한다고 한다면 (파이썬은 0부터 숫자를 센다)
L은 0
i는 1
f는 2
e는 3
>>> a = "Life is wonderful"
>>> a[7]
's'
>>> a[-5]
'e'
>>> a[-0]
'L'
>>> a[0]
'L'
이것이 인덱싱이다.
a라는 변수의 7번째는 s
a라는 변수의 뒤에서부터 5번째는 e (마이너스는 뒤부터 순서를 센다라는 의미다)
단, 뒤에서 셀 때는 -0이라는 개념이 없다. -1부터 시작한다는 의미.
슬라이싱은 한 문자만을 뽑아내는 것이 아닌 단어를 뽑아낸다고 생각했을 때
>>> a[0:4]
'Life'
>>> a[:8]
'Life is'
>>> a[:]
'Life is wonderful'
>>> a[8:-6]
'won'
숫자가 적혀 있지 않다면 맨 처음, 맨 끝이라는 의미.
마이너스와 혼용해서 사용이 가능하다. 단, 혼동 주의
※참고
슬라이싱을 이용해 Pithon"이라는 문자열을 "Python"으로 바꾸자.
단순하게 a[1] = 'y' 하면 대체 되지 않을까 싶지만 불가능하다. (문자열의 요솟값은 바꿀 수 있는 값이 아니기 때문)
>>> a = "Pithon"
>>> a[:1]
'P'
>>> a[2:]
'thon'
>>> a[:1] + 'y' + a[2:] 'Python'
4. 문자열 포메팅 (format)
문자열 포매팅이란 문자열 안에 어떤 값을 삽입하는 방법
1. 바로 대입
>>> "I have %d dollars." % 100
'I have 100 dollars.'
2. 변수 대입
>>> number = 100
>>> day = "two"
>>> "I have %d dollars. so I am going to play in %s area." % (number, day)
'I have 100 dollars. so I am going to play in two area.'
1. 숫자처럼 문자열로 바로 대입이 가능하다.
2. 냉무
※참고
포매팅 연산자 %d와 %를 같이 쓸 때는 %%를 쓴다. 안 그러면 에러난다.
아래의 표는 문자열 포맷코드를 정리한 표이다.
>>> "Error is %d%%." % 98
'Error is 98%.'
변환지정자 | 설명 |
%s | 문자열, 지시된 최대 문자 수 만큼 |
%c | 문자로 출력 |
%d | 10진수 |
%o | 8진수 |
%x | 16진수 |
%u | 부호 없는 10진수 |
%f | 10진수 형태의 실수 |
%e | 10진수 형태의 지수형 |
%g | %f나 %e에 의한 변환의 문자 수가 적은 쪽의 변환으로 출력 |
%% | Literal % (문자 % 자체) |
포맷코드와 숫자 사용
1. 좌우정렬 및 공백
>>> "%10s" % "hey"
' hey'
>>> "%-10sjin." % 'hey'
'hey jin.'
2. 소수점 표현
>>> "%0.3f" % 3.1415926535
'3.141'
>>> "%10.5f" % 3.1415926535
' 3.14159'
1.
10개의 공간에 공백과 hey를 다 포함하여 표현한다.
양수 => 우측 정렬
음수 => 좌측 정렬
2.
코드와 같이 쓴 숫자의 소숫점 아래의 숫자(.3 / .5 )는 소숫점 아래의 표현할 수 있는 수의 갯수를 의미.
정수의 경우, 1번과 마찬가지의 의미.
format 함수를 사용한 포매팅
<대입>
1. 바로 대입
>>> "I have {0} dollars".format(100)
'I have 100 dollars'
2. 2개 이상의 값을 인덱스를 사용하여 넣기
>>> number = 100
>>> day = "two"
>>> "I have {0} dollars. so I am going to play in {1} area." .format(number, day)
'I have 100 dollars. so I am going to play in two area.'
3. 인덱스와 이름을 혼용해서 넣기
>>> number = 100
>>> day = "two"
>>> "I have {0} dollars. so I am going to play in {day} area." .format(number, day = "two")
'I have 100 dollars. so I am going to play in two area.'
<정렬>
4. 왼쪽 정렬
>>> "{0:<10}".format("yo")
'yo'
5. 오른쪽 정렬
>>> "{0:>10}".format("yo")
' yo'
6. 가운데 정렬
>>> "{0:^10}".format("hi")
' hi '
4.
:<10 표현식
=> 치환되는 문자열을 왼쪽으로 정렬, 문자열의 총 자릿수를 10으로 맞춘다.
5.
오른쪽 정렬은 :< 대신 :>을 사용.
화살표 방향으로 생각하면 어느 쪽으로 정렬되는지 알 수 있다.
6.
:^ 기호를 사용하면 가운데 정렬.
<공백 채우기>
7.
>>> "{0:=^10}".format("hi")
'====hi===='
>>> "{0:!<10}".format("hi")
'hi!!!!!!!!'
7.
정렬할 때 지정한 문자 값으로 채워 넣을 수 있다.
채워 넣을 문자 값은 정렬 문자 <, >, ^ 바로 앞에 넣으면 된다.
< 소숫점 표현 / 괄호 표현 >
8. 소수점 표현
>>> y = 3.1415926535
>>> "{0:0.4f}".format(y)
'3.1415'
>>> "{0:10.5f}".format(y)
' 3.14159'
9. { 또는 } 문자 표현
>>> "{{ and }}".format()
'{ and }'
f 문자열 포매팅
1. f 문자열 포매팅 기본
>>> name = 'Jin'
>>> number = 1
>>> f'내 이름은 {name}이고, 내가 좋아하는 숫자은 {number}이다.'
'내 이름은 Jin이고, 내가 좋아하는 숫자은 1이다.'
2. 표현식(수식) 대입
>>> f'내가 좋아하는 숫자은 {number+1}이다.'
'내가 좋아하는 숫자은 2이다.'
3. 딕셔너리 사용
>>> d = {'name':'Jin', 'number':1}
>>> f'내 이름은 {d["name"]}이고, 내가 좋아하는 숫자은 {d["number"]}이다.'
'내 이름은 Jin이고, 내가 좋아하는 숫자은 1이다.'
3.
딕셔너리는 Key와 Value라는 것을 한 쌍으로 갖는 자료형이다.
(Javascript에서의 객체와 같다.)
4. 정렬
>>> f'{"hi":<10}' # 왼쪽 정렬
'hi '
>>> f'{"hi":>10}' # 오른쪽 정렬
' hi'
>>> f'{"hi":^10}' # 가운데 정렬
' hi '
5. 공백 채우기
>>> f'{"hi":=^10}' # 가운데 정렬, '=' 문자로 공백
'====hi===='
>>> f'{"hi":!<10}' # 왼쪽 정렬, '!' 문자로 공백
'hi!!!!!!!!'
6. 소수점 표현
>>> y = 3.14159265
>>> f'{y:0.4f}' # 소수점 4자리까지만 표현
'3.1415'
>>> f'{y:10.5f}' # 소수점 5자리까지 표현하고 총 자리수를 10으로 맞춤
' 3.14159'
7. 괄호 표현
>>> f'{{ and }}'
'{ and }'
4~7.
주석 참고.
format 함수와는 차이점은
format( ) 함수의 괄호 안에 들어가는 변수나 데이터들이
f 문자열의 { } 안에 초기 데이터 인덱스(0) 자리에 들어간다는 점만 다르다.
5. 문자열 관련 함수
문자열은 내장함수가 있다.
사용하는 방식은 변수 뒤에 ' . ' 을 붙이고 내장함수를 쓰면 된다.
1. 문자 개수 세기(count)
>>> a = "HAPPY"
>>> a.count('P')
2
2. 위치 알려주기1(find)
>>> a = "you are my best friend"
>>> a.find('a')
4
>>> a.find('c')
-1
3. 위치 알려주기2(index)
>>> a = "my name is jin"
>>> a.index('e')
6
>>> a.index('k')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
1.
문자열 중 문자 P의 개수를 돌려준다.
2.
문자열 중 문자 a가 처음으로 나온 위치를 반환한다.
만약 찾는 문자나 문자열이 존재하지 않는다면 -1을 반환한다.
(파이썬은 0부터 숫자를 세는 걸 잊지 말아라)
3.
2번과 동일하나 -1 대신 오류를 반환하는 점이 다르다.
4. 문자열 삽입(join)
>>> ",".join('abcd')
'a,b,c,d'
>>> ",".join(['a', 'b', 'c', 'd'])
'a,b,c,d'
5. 소문자를 대문자로 바꾸기(upper)
>>> a = "hey"
>>> a.upper()
'HEY'
6. 대문자를 소문자로 바꾸기(lower)
>>> a = "HEY"
>>> a.lower()
'hey'
4.
abcd 문자열의 각각의 문자 사이에 ','를 삽입.
join 함수는 문자열뿐만 아니라 앞으로 배울 리스트나 튜플도 입력으로 사용할 수 있다 (두번째처럼)
5.
문자열이 이미 대문자라면 아무 변화도 일어나지 않는다.
6.
내용 무
7. 왼쪽 공백 지우기(lstrip)
>>> a = " hello "
>>> a.lstrip()
'hello '
8. 오른쪽 공백 지우기(rstrip)
>>> a= " hello "
>>> a.rstrip()
' hello'
9. 양쪽 공백 지우기(strip)
>>> a = " hello "
>>> a.strip()
'hello'
10. 문자열 바꾸기(replace)
>>> a = "Life is gorgeous"
>>> a.replace("Life", "Your body")
'Your body is gorgeous'
11. 문자열 나누기(split)
>>> a = "Life is ZZANG"
>>> a.split()
['Life', 'is', 'ZZANG']
>>> b = "g:o:l:d"
>>> b.split(':')
['g', 'o', 'l', 'd']
7.
왼쪽의 연속된 공백들을 모두 지운다. lstrip에서 l은 left를 의미.
8.
rstrip에서 r는 right를 의미.
9.
내용 무
10.
replace(바뀌게 될 문자열, 바꿀 문자열)
=> 문자열 안의 값을 다른 값으로 치환.
11.
split 함수는 a.split()처럼 괄호 안에 아무 값도 없으면
공백(스페이스, 탭, 엔터 등)을 기준으로 문자열을 나누어 준다.
괄호 안에 특정 값이 있을 경우,
괄호 안의 값을 구분자로 해서 문자열을 나눈다.
이렇게 나눈 값은 리스트에 하나씩 들어간다.
'파이썬(Python) > 파이썬(Python) 기초' 카테고리의 다른 글
파이썬(Python) 2장 자료형 - 5. 딕셔너리 자료형 (0) | 2022.07.01 |
---|---|
파이썬(Python) 2장 자료형 - 4. 튜플 자료형 (0) | 2022.07.01 |
파이썬(Python) 2장 자료형 - 3. 리스트 자료형 (0) | 2022.06.30 |
파이썬(Python) 2장 자료형 - 1. 숫자형 / 참고.Python 형변환 (0) | 2022.06.28 |
파이썬(Python) 1장 설치 및 시작 (0) | 2022.06.28 |
댓글