일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- react
- ReactNative
- notion
- 별찍기
- input함수
- COUNT()
- summarise()
- Django
- 조건문
- sqldf
- Swift
- python
- pycharm
- f-string
- inflearn
- 자료형
- 멤버십 연산자
- match case
- while
- sd()
- 반복문
- R 데이터 분석
- 제어문
- 동일성 연산자
- 점프투장고
- mutate()
- vs code
- 소수출력
- javascript
- group_by()
- Today
- Total
✏️
220816 | ② Python / 문자열 특징 - 아스키코드, 유니코드, 인덱싱, 슬라이싱, 문자열 메소드 본문
220816 | ② Python / 문자열 특징 - 아스키코드, 유니코드, 인덱싱, 슬라이싱, 문자열 메소드
콩세 2022. 10. 6. 14:22https://bean-three.tistory.com/16
220811 | ② 반복문(for) / 기타 제어문 / 문자열
3. 반복문 일정 횟수만큼, 또는 조건식을 만족하는 동안 블록을 반복 실행하는 문장. 220810 | ② 멤버십 연산자, 동일성 연산자 / 제어문: 조건문(if, else, elif), match-case, 반복문(while) ▷자료형 변환
bean-three.tistory.com
220811 ②번 글에 이어서 문자열에 대해 더 작성하겠음!
문자열 특징
- 불변데이터 (immutable) : int, float, bool 등은 한 번 만들어지면 컴퓨터 메모리에 저장되어 변하지 않는다.
- + 연산자로 문자열 접합
- * 연산자로 문자열 반복
- 아스키 코드 (ASCII) 변환 가능
- 유니코드 지원
아스키코드(ASCII)
- 컴퓨터는 숫자를 저장할 때 바로 저장하지 않고, 2진수로 변환해서 저장한다.
- 과거 미국에서 사용되던 표준 문자 변환 규칙.
- ord(): 입력받을 알파벳 또는 특수문자에 대한 아스키 코드 숫자 계산 (문자->숫자)
print('a =>', ord('a'))
print('b =>', ord('b'))
print('c =>', ord('c'))
a => 97 b => 98 c => 99 |
- chr(): 입력받은 아스키 코드 숫자에 대한 알파벳 또는 특수문자 계산 (숫자->문자)
print('97 =>', chr(97))
print('98 =>', chr(98))
print('99 =>', chr(99))
97 => a 98 => b 99 => c |
유니코드(Unicode)
아스키 코드를 확장하여 더 많은 문자에 대한 변환 규칙을 추가한 방식.
- 16진수 4자리수로 만들어진다.
print('유니코드 61 =>', '\u0061')
print('유니코드 62 =>', '\u0062')
print('유니코드 63 =>', '\u0063')
print('유니코드 ? =>', '\uabcd')
유니코드 61 => a 유니코드 62 => b 유니코드 63 => c 유니코드 ? => ꯍ |
인덱싱 / 슬라이싱
- 텍스트 시퀀스(=문자열)
- 인덱스 : 순번, 특정 문자가 몇 번째 있는지 그 번호를 의미.
- 인덱싱 (indexing) : 인덱스를 사용하여 부문 문자를 추출하는 문법.
- 슬라이싱 (slicing) : 인덱스를 사용하여 부문 문자열을 추출하는 문법.
(인덱싱은 문자 하나만 추출, 슬라이싱은 여러개 추출)
- 인덱싱
s = "Hello, Student. I'm teacher."
print(s[0]) # 인덱싱을 이용해서 0번(첫 번째 문자) 인덱스의 문자 추출
print(s[1]) # 인덱싱을 이용해서 1번(두 번째 문자) 인덱스의 문자 추출
H e |
(공백, 쉼표 등도 문자에 포함됨)
(존재하지 않는 문자열의 범위 지정 시, 오류 발생.)
- 슬라이싱
print(s[0:5]) # 0 ~ 4번 인덱스의 문자열 추출
print(s[7:15] # 7 ~ 14번 인덱스의 문자열 추출
print(s[-8:-2]) # -8 ~ -1번 인덱스의 문자열 추출
Hello Student. teacher |
(범위를 벗어난 인덱스도 처리 가능.)
print(s[5:23:2]) # 5 ~ 22번 인덱스의 문자열을 2개씩 건너뛰어가며 추출
print(s[::3]) # 처음부터 끝까지 문자열을 3개씩 건너뛰어가며 추출
,Suet ' e Hl un meh. |
(,) 부터 a 까지가 5 ~ 22번 인덱스 이고,
2개씩 건너뛰어서 추출하면
(,) (S) (u) (e) (t) ( ) (') ( ) (e) => ,Suet ' e
문자열 메소드
- 철자 관련
s1 = "Hello,, World! Hi Students"
print(s1.lower()) # lower(): 모든 알파벳을 소문자로 변환
print(s1.upper()) # upper(): 모든 알파벳을 대문자로 변환
print(s1.title()) # title(): 각 단어의 첫 글자를 대문자로, 나머지는 소문자로 변환
print(s1.capitalize()) # capitalize(): 맨 첫 글자를 대문자로, 나머지는 소문자로 변환
hello, world! hi students HELLO, WORLD! HI STUDENTS Hello, World! Hi Students Hello, world! hi students |
- 탐색 관련
find() : 문자열을 찾을 때 사용하는 함수. 찾은 문자열의 위치를 인덱스로 계산
s2 = "apple banana orange apple orange ornage"
print(s2.find('apple'))
print(s2.find('banana'))
print(s2.find('orange'))
0 6 13 |
rfind() : 오른쪽부터 문자열을 찾을 때 사용하는 함수.
print(s2.rfind('apple'))
print(s2.rfind('banana'))
print(s2.rfind('orange'))
20 6 33 |
print(s2.find('orange', 14)) # 어디에서부터 찾을 지 시작 인덱스 설정 가능
print(s2[14:].find('orange')+14)
# 14번 이후부터 orange를 찾아라. 그리고 14번부터 찾기 시작해서 앞에 문자들은 사라졌으니까 마지막에 +14를 해주자.
print(s2.find('orange', 14, 26)) # 어디에서부터 어디까지 찾을지 시작 및 끝 인덱스 설정 가능
print(s2.find('melon')) # 못찾으면 오류가 아닌 -1이 출력된다.
26 26 -1 -1 |
index() : 문자을을 찾을 때 사용하는 함수, 찾은 문자열의 위치를 인덱스로 계산.
print(s2.index('apple'))
print(s2.index('melon')) # melon은 문자열에 없기 때문에 오류가 발생한다.
0 오류발생 |
count() : 문자열이 몇 개 있는지 찾을 때 사용하는 함수
print(s2.count('apple'))
print(s2.count('banana'))
print(s2.count('melon')) # melon은 문자열에 없어서 셀 수 없으니 0으로 출력됨
2 1 0 |
- 정렬 관련
s = 'python'
print('#', s.center(10), '#', sep='') # center(폭): 주어진 폭에서 문자열을 가운데 정렬
print('#', s.ljust(10), '#', sep='') # ljust(폭): 주어진 폭에서 문자열을 왼쪽 정렬
print('#', s.rjust(10), '#', sep='') # rjust(폭): 주어진 폭에서 문자열을 오른쪽 정렬
# python # #python # # python# |
sep='' => python 문자랑 공백 띄어쓰기 없이 추출하기 위해서 뒤에 써줌.
- 검사 관련
islower() : 문자열이 모두 소문자로 이루어져 있는지 검사
is upper() : 문자열이 모두 대문자로 이루어져 있는지 검사
s1 = 'abcd'
s2 = 'ABCD'
print(s1.islower()) # islower(): 문자열이 모두 소문자로 이루어져 있는지 검사
print(s1.isupper()) # isupper(): 문자열이 모두 대문자로 이루어져 있는지 검사
print(s2.islower())
print(s2.isupper())
True False False True |
isalpha() : 문자열이 모두 알파벳으로 이루어져 있는지 검사
s3 = '1234'
print(s1.isalpha())
print(s2.isalpha())
print(s3.isalpha())
True True False |
isnumeric() : 문자열이 모두 숫자로 이루어져 있는지 검사
print(s1.isnumeric())
print(s2.isnumeric())
print(s3.isnumeric())
False False True |
isspace() : 문자열이 모두 숫자로 이루어져 있는지 검사
s4 = " "
print(s1.isspace())
print(s2.isspace())
print(s3.isspace())
print(s4.isspace())
False False False True |
startswith() : 원본 문자열이 제시된 문자열로 시작하는지 검사
endwith() : 원본 문자열이 제시된 문자열로 끝나는지 검사
print(s1.startswith('a'))
print(s1.endswith('a'))
True False |
- 변경
replace('기존 str', '새 str') : 기존 문자열에서 새 문자열로 교체
s1 = 'Hello World!'
print(s1. replace('Hello', 'Hi'))
s2 = s1.replace('Hello', 'Hi').replace('Wolrd', 'Students')
print(s2)
s3 = s1.replace('Hello', 'Hi').replace('Wolrd', 'Students').replace('!', '?')
Hi World! Hi Students! Hi Students? |
lstrip() : 왼쪽 공백을 제거
rstrip() : 오른쪽 공백을 제거
strip() : 모든 공백을 제거
s4 = ' Hello Wolrd '
print('#', s4.lstrip(), '#', sep='')
print('#', s4.rstrip(), '#', sep='')
print('#', s4.strip(), '#', sep='')
#Hello World # # Hello World# #Hello World# |
+) replace()로 모든 공백 제거하기
print('#', s4.replace(' ', ''), '#', sep='')
#HelloWorld# |
- 분할
split('기준') : 문자열을 제시된 기준으로 잘라서 목록으로 만듦.
s5 = 'Hello, World! Hi, Students!'
print(s5.split()) # 공백을 기준으로 문자열을 자르고 목록에 담아서 추출.
for substr in s5.split(): # 목록을 기준으로 반복문 작성.
print(substr)
['Hello,', 'World!', 'Hi,', 'Students!'] Hello, World! Hi, Students! |
print(s5.split('!')) # 느낌표를 기준으로 문자열 자르기
['Hello, World', ' Hi, Students', ''] |
총 3개의 덩어리로 잘라지는 것을 확인할 수 있음!
두번째 덩어리 문자 앞에 공백 있는거, 마지막 문자열은 없의까 ''로만 끝나는거 확인.
- 접합
'붙일 사이 문자열', join([붙일 대상 목록]) : 문자열을 접합시킴.
substr_list = s5.split() # 잘라낸 목록을 subtr_list라는 변수에 저장.
print('/'.join(substr_list))
print('\n'.join(substr_list))
Hello,/World!/Hi,/Students! Hello, World! Hi, Students! |
'K-Digital Training' 카테고리의 다른 글
11월 일정 : R 데이터 분석 (0) | 2022.11.23 |
---|---|
220816 | ③ Python / 문자열 포매팅 - 치환 연산자, format(), f-string (0) | 2022.10.06 |
220816 | ① Python / 제어문 예제 (추가) : 구구단, 계산기, 소수출력 (0) | 2022.10.06 |
220811 | ③ Python / for문, 기타 제어문 예제 (1) | 2022.09.30 |
220811 | ② Python / 반복문(for) / 기타 제어문 / 문자열 (1) | 2022.09.30 |