아래 내용은 공부한 것을 정리하므로 틀린 내용이 포함되어 있을 수 있습니다.
1. 문자열(str)
- String은 글자의 Unicode 코드로 이루어진 불변한 순서있는 집합입니다.
- ”” (쌍따옴표), ‘‘(작은따옴표) 모두 사용가능합니다. 자바스크립트와 같습니다.
- ”’ 와같이 혼용할 수 없습니다.
- REPL 에서 확인합니다.
>>> "쌍따옴표 문자열" '쌍따옴표 문자열' >>> '작은따옴표 문자열' '작은따옴표 문자열' >>> "혼용하면 에러발생' File "<stdin>", line 1 "혼용하면 에러발생' ^ SyntaxError: EOL while scanning string literal
- 큰따옴표 안에 작은따옴표는 들어갈 수 있고, 반대로 큰따옴표 안에 작은따옴표 들어갈 수 있습니다.
>>> "It's a good thing" "It's a good thing" >>> '"Yes",he said,"I agree!"' '"Yes",he said,"I agree!"'
- 문자열을 나란히 두개 입력하면 문자열이 합쳐집니다.
- 이로 인해 list에서 문자열을 입력할 때 실수할 여지가 있습니다. 콤마가 없으면 에러나지 않고 문자열이 합쳐집니다.
>>> "abc" "def" 'abcdef' >>> "abc" "def" 'abcdef' >>> ["abc" ... "def", ... "ghi"] ['abcdef', 'ghi']
2. 멀티라인 입력
- 여러열 문자를 입력할때는 “”” 큰따옴표 3개나, ‘’’ 작은따옴표 3개를 입력합니다.
- \n 으로 표시되는 부분이 newline문자로 열을 바꿔주는 문자입니다.
- 시스템상에서 기본 newline문자는 Mac과 Linux
\n
이지만, Windows에서는\r\n
입니다. - 하지만 Windows에서도 newline문자로
\n
이 찍히며, REPL에서도 정상적으로 라인이 바뀝니다.>>> """ 이것은 ... 멀티라인 ... 입력입니다.""" ' 이것은\n멀티라인\n입력입니다.' >>> ''' 이것도 ... 멀티라인 ... 입력입니다.''' ' 이것도\n멀티라인\n입력입니다.'
3. 이스케이프 문자
- 이스케이프 문자란 직접 입력할 수 없는 일부 문자를 문자열에 포함시킬 수 있는 특수 문자를 지칭합니다.
-
\
역슬래시가 파이썬의 이스케이프 문자 - 예제
>>> a = "이스케이프 문자 \n 라인이 바뀜 \\ 쌍따옴표를 또 쓰기 \"\" " >>> print(a) 이스케이프 문자 라인이 바뀜 \ 쌍따옴표를 또 쓰기 ""
- 이스케이프 문자를 통해 유니코드 문자열을 입력할 수 있습니다.
>>> 'Vi er s\u00e5 glad for \u00e5 h\u00f8re og l\u00e6re om Python!' 'Vi er så glad for å høre og lære om Python!'
- 유니코드 문자열을 16진수로 바로 입력할 수 있습니다.
>>> '\xe5' 'å'
- 반대로 이스케이프 문자를 막는 raw문자열을 문자열 앞에
r
을 붙여 만들 수 있습니다.>>> a = r"이스케이프 문자 \n 라인이 바뀜 \\ 쌍따옴표를 또 쓰기 \"\" " >>> print(a) 이스케이프 문자 \n 라인이 바뀜 \\ 쌍따옴표를 또 쓰기 \"\"
4. 변환
- int, float -> str 변환
>>> str(396) '396' >>> str(5.52) '5.52' >>> str(6.02e10) '60200000000.0' >>> str(6.02e20) '6.02e+20'
5. 컬렉션 접근
- String도 List와 같은 Collection 처럼 접근할 수 있습니다.
[문자열인덱스 숫자]
형식으로 접근됩니다.>>> s = 'abcdef' >>> s[3] 'd'
6. String 여러가지 메소드
- 문자열을 다양하게 변환하며 활용하게 됩니다.
- 문자열을 type함수를 실행해보면 아래와같이 나옵니다.
>>> type("문자열") <class 'str'>
- help 함수로 str에서 다양하게 활용할 수있는 메소드들 리스트를 볼수 있습니다.
- q 버튼으로 빠져나올 수 있습니다.
help(str)
- 몇가지만 살펴보겠습니다.
- join : 문자열을 합치는데 사용합니다. 구분자가 앞에서 사용되어집니다.
>>> ','.join(['a','b','cde']) 'a,b,cde'
- split : join과 반대입니다. 문자열을 구분자로 나누어 리스트로 반환합니다.
>>> 'a,b,cde'.split(',') ['a', 'b', 'cde']
- partition : 구분자로 나누어 tuple형으로 반환합니다.
>>> departure, _, arrival = "Seattle-Seoul".partition('-') >>> departure 'Seattle' >>> _ '-' >>> arrival 'Seoul'
- format : 문자를 다양한 형태로 포맷팅하는데 사용합니다.
- 인덱스 형으로 format을 사용하는 예제입니다.
>>> "Name: {}, Age: {}".format("철수", 13) 'Name: 철수, Age: 13' >>> "Name: {0}, Age: {1}".format("영희", 15) 'Name: 영희, Age: 15' >>> "Name: {0}, Age: {1}: {0}의 나이가 {1}".format("민호", 17) 'Name: 민호, Age: 17: 민호의 나이가 17'
- 키워드 형으로 format을 사용하는 예제입니다.
>>> "Name: {name}, Age: {age}: {name}의 나이가 {age}".format(age=19, name='재석') 'Name: 재석, Age: 19: 재석의 나이가 19'
- 리스트를 넘기고 index로 접근하는 format예제입니다.
>>> pos = [12.5, 35, 90] >>> "A의 좌표는 x = {p[0]}, y = {p[1]}, z = {p[2]}".format(p=pos) 'A의 좌표는 x = 12.5, y = 35, z = 90'
- module을 넘겨 활용하는 format 예제입니다.
>>> import math >>> '수학에서 파이= {m.pi}'.format(m=math) '수학에서 파이= 3.141592653589793'
- format을 통해 넘겨받은 데이터를 변형할수도 있습니다.
- 소수점 3자리에서 끊었습니다.
- 변형의 예는 좀 더 많습니다. https://www.digitalocean.com/community/tutorials/how-to-use-string-formatters-in-python-3
>>> '수학에서 파이= {m.pi:.3f}'.format(m=math) '수학에서 파이= 3.142'
- capitalize: 첫 글자 대문자 나머지 문자 소문자로 변환합니다.
- a가 바뀌지는 않습니다.
>>> a = "abcDef" >>> a.capitalize() 'Abcdef' >>> a 'abcDef'
- strip : 좌우 공백을 제거 합니다.
>>> s = " abc " >>> s.strip() 'abc' >>> s ' abc '
- len : Str함수는 아니며, 일반 내장함수입니다. 문자열 길이 또는 컬렉션형의 길이를 나타냅니다.
>>> len("abcd12345abcdefg") 16