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'