파이썬 python/파이썬 기초 basic
03 문자열
ynzify
2023. 5. 1. 14:02
문자열이란?
- 하나 이상의 문자를 순서대로 나열한 자료형 (str)
- sequence 자료형
- immutable 자료형
- 인코딩이란?
- 컴퓨터가 문자를 처리하기 위해 숫자 형태로 변환하는 표준 규칙
- ASCII, EUC-KR, UTF-8(세계 표준 규칙)
# 문자열은 작은 따옴표 또는 큰따옴표 사이에 작성하면 된다.
>>> name1 = "관수"
>>> name2 = '철수'
>>> print(name1)
>>> print(name2)
관수
철수
이스케이프 코드 (escape code)
- 키보드로 직접 입력이 불가능해 미리 정의해둔 문자 조합
- `\n` : 줄바꿈
- `\t` : Tab key
>>> text = "나는 말했다. \n'파이썬이 재미있다'라고..."
>>> print(text)
나는 말했다.
'파이썬이 재미있다'라고...
>>> text = "나는 말했다. \t'파이썬이 재미있다'라고..."
>>> print(text)
나는 말했다. '파이썬이 재미있다'라고...
# 대화형에서 마지막 실행결과의 출력과 print 함수 출력의 차이
>>> text
"나는 말했다. \t'파이썬이 재미있다'라고..."
Doc string
- 따옴표 3개 이어쓰기
- 여러줄 주석으로도 사용 가능
```python
'''문자열'''
"""
문자열
"""
문자열 연산
- 슬라이싱, 인덱싱 모두 가능
>>> text1 = "hello"
>>> text2 = "world"
>>> print(text1+text2)
helloword
>>> "d" in text2 # not in 도 됨
True
>>> text1 == "hello" # != 도 가능
True
문자열 포매팅 (String Formatting)
- 문자열 내의 특정한 값을 변수로부터 동적으로 문자열을 생성함
- 문자열을 생성할 때 어떠한 서식 (format) 지정 가능
>>> name = "수"
>>> age = 4
>>> text = "내 이름은 " + name + "입니다. 나이는 " + str(age) + "입니다."
>>> print(text)
내 이름은 수입니다. 나이는 4입니다.
- format 메소드 활용
>>> text = "제 이름은 {}입니다. 나이는 {}입니다."
>>> text.format(name,age) # 인수를 넣은 순서대로 중괄호 부분에 들어간다.
'제 이름은 수입니다. 나이는 4입니다.'
- % 기호 이용
>>> name = "시"
>>> age = 24
>>> gpa = 4.5
>>> text = "나이는 %d입니다." % age
>>> print(text)
나이는 24입니다.
>>> text = "제 이름은 %s입니다. 나이는 %d입니다." % (name,age)
>>> print(text)
제 이름은 시입니다. 나이는 24입니다.
>>> text = "제 이름은 %s입니다. 나이는 %d입니다. 나의 평점은 %f 입니다." % (name,age,gpa)
>>> print(text)
제 이름은 시입니다. 나이는 24입니다. 나의 평점은 4.500000 입니다.
F-string 이용 (ver 3.6부터 이용가능 ㅈㄴ 편함)
>>> name = "시"
>>> age = 24
>>> text = f"제 이름은 {name}입니다. 나이는 {age}입니다."
>>> print(text)
제 이름은 시입니다. 나이는 24입니다.
문자열 메소드
대/소문자화
>>> text = "Hello Python"
>>> text.upper() # 대문자화
'HELLO PYTHON'
>>> text.lower() # 소문자화
'hello python'
문자열 치환
>>> text = "Hello Python"
>>> text.replace("P","C")
'Hello Cython'
>>> text.replace("p","C") # 해당 문자가 없어도 에러 발생안함
'Hello Python'
>>> "#" + text.replace(" ","#") # 공백을 대체한거
'#Hello#Python'
문자열 분리
>>> text = "Hello Python"
>>> text.split() # 인수를 안 줄 경우 공백을 기준으로 분리한다.
['Hello', 'Python']
>>> text = "평균은 이상치의 영향을 많이 받는다. 중앙값은 이상치의 영향을 덜 받는다!"
>>> text.split(".")
['평균은 이상치의 영향을 많이 받는다', ' 중앙값은 이상치의 영향을 덜 받는다!']
문자열 좌우 공백 제거
>>> text = " 평균은 이상치의 영향을 많이 받는다. \n\n\n\n"
>>> print(text)
평균은 이상치의 영향을 많이 받는다.
>>> print(text.strip()) # 양쪽 공백 제거
평균은 이상치의 영향을 많이 받는다.
>>> print(text.rstrip()) # 오른쪽 공백 제거
평균은 이상치의 영향을 많이 받는다.
>>> print(text.lstrip()) # 왼쪽 공백 제거
평균은 이상치의 영향을 많이 받는다.
문자열 합치기 (join)
- split의 반대 개념
- 특정 문자열을 기준으로 리스트에 들어가 있는 문자열들을 합친다
우선 split 해보기
>>> text = "표준편차는 데이터가 평균을 중심으로 얼마나 퍼져있는지 나타내는 수치이다."
>>> a="평균을"
>>> result = text.split(a)
>>> print (result,[a])
['표준편차는 데이터가 ', ' 중심으로 얼마나 퍼져있는지 나타내는 수치이다.'] ['평균을']
join 사용
>>> "#".join(result)
'표준편차는#데이터가#평균을#중심으로#얼마나#퍼져있는지#나타내는#수치이다.'
>>> tup = ("표준편차","평균","중앙값","왜도","첨도")
>>> ",".join(tup)
'표준편차,평균,중앙값,왜도,첨도'
찾을 문자열로 시작하는지 여부를 반환하는 메소드
>>> text = "왜도는 데이터 분포의 비대칭도를 나타내는 통계량이다."
>>> text.startswith("왜도")
True
찾을 문자열로 끝나는지 여부를 반환하는 메소드
>>> text = "왜도는 데이터 분포의 비대칭도를 나타내는 통계량이다."
>>> text.endswith("왜도")
True
문자열의 모든 문자가 0~9범위의 문자인지에 대한 여부를 반환
>>> s = '000'
>>> s.isdigit()
True
>>> s = '0.01'
>>> s.isdigit()
False
>>> s = '-1'
>>> s.isdigit()
False
문자열 앞에 지정한 길이로 0으로 채움
>>> "3".zfill(5)
'00003'
>>> n = "33333"
>>> n.zfill(6)
'03333'