-
파이썬 프로그래밍의 기초, 자료형 - 문자열 자료형Python study 2021. 4. 30. 04:08
문자열이란?
문자열(String)이란 문자, 단어 등으로 구성된 문자들의 집합을 의미한다.
"Life is too short , you need python"
"a"
"123"
위 문자열 예문을 보면 모두 큰 따움표("")로 둘러싸여 있다.
"123" 은 숫자를 생각 하는 사람도 있을것 같다 하지만 "" 로 감싸줌으로써 문자열로 사용하겠다고 프로그램에게 선언을 한 것이라고 보면 된다.
문자열은 어떻게 만들고 사용할까?
파이썬에서 문자열을 만드는 방법은 총 4가지이다.
1.큰 따움표(")로 양쪽 둘러싸기
"Hellow World"
2.작은 따움표(')로 양쪽 둘러싸기
'python is fun'
3.큰 따움표로 3개를 연속(""")으로 써서 양쪽 둘러싸기
"""
Life is too short,
you need python"""
4. 작은따옴표 3개를 연속(''') 써서 양쪽 둘러싸기
'''
Life is too short,
you need python'''
단순함이 자랑인 파이썬이 문자열을 만드는 방법은 왜 4가지나 가지게 되었을까 ? 그 이유에 대해 알아보자.
문자열 안에 작은 따옴표나 큰 따옴표를 포함시키고 싶을때
1. 문자열에 작은 따옴표(') 포함시키기
python`s favorite food is perl
위와 같은 문자열을 food 변수에 저장하고 싶다고 가정하자 문자열중 Python`s 작은따옴표(')가 포함되어 있다.
이럴 때는 다음과 같이 문자열을 큰 따옴표(")로 둘러싸야 한다. 큰따옴표 안에 들어 있는 작은 따옴표는 문자열을 나타내기위한 기호로 인식되지 않는다.
food = "python`s favorite food is perl"
2. 문자열에 큰 따옴표(") 포함시키기
"python is very easy."he says.
위와 같이 큰 따옴표(")가 포함된 문자열 이라면 어떻게 해야 큰따옴표가 제대로 표현될까?
다음과 같이 문자열을 작은 따옴표(')로 둘러 싸면 된다
say = '"python is very easy."he says.'
3. 백슬래시(\)를 사용해서 작은따옴표(')와 큰따옴표(")를 문자열에 포함시키기
food = 'python\`s favorite food is perl'
say = "\"python is very easy."\" he says."작은따옴표나 큰 따옴표를 문자열에 포함시키는 또 다르 방법은 백슬래시를 사용하는 것이다.
즉 백슬래시를 작온 따옴표나 큰 따옴표 앞에 사입하면 백슬래시 뒤의 작은 따옴표나 큰 따옴표는 문자열을 둘러싸는 기호의 의미가 아니라 문자 그 자체를 뜻하게 된다.
여러 줄인 문자열을 변수에 대입하고 싶을때
문자열이 항상 한 줄짜리만 있는 것은 아니다.
여러줄의 문자열을 변수에 대입하려면 어떻게 처리 해야 할까?
my name Jeon Yang Ho
and , my hobby is ride a bike
1.줄을 바꾸기 위한 이스케이프 코드 \n 삽입하기
multiline = "my name Jeon Yang Ho \n and, my hobby is ride a bike"
단점 : 읽기에 불편하고 코드 가독성이 떨어짐
2.연속된 작은 따옴표3(''')개 또는 큰 따옴표 3(""")개 사용하기
위 단점을 극복하기 위해 파이썬에서는 다음과 같이 작은 따옴표 3개 (''') 또는 큰 따옴표 3개 (""")를 사용한다.
multiline = '''
my name Jeon Yang Ho
and , my hobby is ride a bike
'''
multiline = """
my name Jeon Yang Ho
and , my hobby is ride a bike
"""
[이스 케이프 코드란?]
이스케이프 코드란 프로그래밍할 때 사용할 수 있도록 미리 정의해둔 "문자 조합"이다.
주로 출력물을 보기 좋게 정렬하는 용도로 사용한다.
몇 가지 이스케이프 코드를 정리하면 다음과 같다.
편의상 역슬레시를 \로 정의하겠다.
코드 설명 \n 문자열 안에서 줄을 바꿀 때 사용 \t 문자열 사이에 탭 간격을 줄 떄 사용 \\ 문자 \를 그대로 표현 할때 사용 \' 작은 따옴표(')를 그대로 표현할 때 사용 \" 큰 따옴표(")를 그대로 표현할 때 사용 \r 캐리지 리턴(줄 바꿈 문자, 현재 커서를 가장 앞으로 이동) \f 폼 피드 (줄 바꿈 문자, 현재 커서를 다음 줄로 이동) \a 벨 소리 (출력할 때 마다 PC 스피커에서 '삑' 소리가 난다) \b 백 스페이스 \000 널 문자 문자열 연산하기
문자열 더해서 연결하기
head = "my name is"
tail = "Jeon Yang ho"
head + tail
'my name is Jeon Yang ho'
문자열 곱하기
a = 'python'
a*2
'pythonpython'
문자열 곱하기는 문자열의 반복을 뜻하는 의미로 사용되었다.
문자열 곱하기 응용
문자열 길이 구하기
문자열의 길이는 len 함수를 사용하면 구할 수 있다. len 함수는 print 함수처럼 파이썬의 기본 내장 함수로
별 다른 설정 없이 바로 사용 할수 있다
a = "Life is too short"
len(a) #17
문자열 인덱싱과 슬라이싱
인덱싱(indexing) 이란 무엇인가를 "가르킨다"는 의미이고, 슬라이싱(Slicing)은 무엇인가를 "잘라낸다"는 의미이다.
문자열 인덱싱이란 ?
a = "Life is too short, you need python"
Life is too short you need python
012 . . ..
위 문자열에서 첫번째 자리 L은 자릿수 값이 0 이다. 바로 다음인 i 는 자리수 값이 1
이런식으로 문자열에는 각 문자에 해당하는 자리값이 있다. 문자열 내부의 주소 값이라고 이해 하면 편할것 같다.
a = "Life is too short, you need python"
print(a[3])
>>> e
따라서 문자열 안의 특정한 값을 뽑아내는 작업 을 인덱싱 이라고 한다.
문자열 인뎅싱 활용하기
a = "Life is too short, you need python"
print(a[-1])
>>> n
a[-1]은 뒤에서 부터 세어 첫 번째가 되는 문자를 말한다.
a의 값은 Life is too short, you need python 문자열 이므로 뒤에서 부터 첫 번째 문자는 가장 마지막 문자인'n'이다.
다만 주의 할점이 있다 . 파이썬은 0번째부터 읽어 온다 라고 해서 가장 마지막 에서 첫번째 글자를 a[-0] 이라고 생각 할수 있지만 . a[-0] 은 a[0]와 같은 뜻이므로 출력시 같은 값을 가지고 온다.
a = "Life is too short, you need python"
print(a[0])
>>> L
print(a[-0])
>>> L
문자열 슬라이싱이란?
문자열에서 단순히 한 문자만을 뽑아내는 것이 아니라 문자열 안에서 특정 문자열을 추출해내는 방법.
예를 들어 Life is too short, you need python 에서 Life라는 단어를 추출 하는 방법을 말한다.
a = "Life is too short, you need Python"
a[0:4]
>>>
'Life'
주의 할점 : a[시작번호:끝번호] 끝번호에 해당하는 것은 포함되지 않는다.
즉 . 0<= a < 4 라는 의미.
슬라이싱에서도 인덱싱과 마찬가지로 마이너스 기호를 사용 할수 있다.
슬라이싱으로 문자열 나누기
다음은 자주 사용하게 되는 살라이싱 기법 중 하나이다.
a = "20010331Rainy"
date = a[:8]
weather = [8:]
print(date)
>>>'20010331'
print(weatehr)
>>>'Rainy'
인덱싱과 슬라이싱은 프로그래밍을 할때 매우 자주 사용하는 기법이니 꼭 반복해서 연습해 두자.
["Pithon"이라는 문자열을 "Python"으로 바꾸려면?]
문자열의 요솟값은 바꿀 수 있는 값이 아니다.
문자열 자료형은 그 요소값을 변경할수 없어 immtable 한 자료형 이라고도 부른다.
하지만 슬라이싱 기법을 사용하여 pithon 문자열을 python 문자열로 재 생성 할수 있다.
a = "pithon"
a[:1]
>>>'p'
a[2:]
>>>'thon'
a[:1] + 'y'+a[2:]
'Python'
문자열 포매팅
문자열 안의 특정한 값을 바꿔야 할 경우가 있을 때 이것을 가능하게 해주는 것이 바로 문자열 포매팅 기법이다.
쉽게 말해 문자열 포매팅이란 문자열 안에 어떤 값을 삽입하는 방법이다.
문자열 포매팅 따라하기
1. 숫자 바로 대입
>>>"I eat %d apples" %3
'I eat 3 apples'
문자열 안에서 숫자를 넣고 싶은 자리에 %d (포메팅코드)문자를 넣어주고 , 삽입할 숫자 3은 가장 뒤에 있는 % 문자 다음에 써 넣엇다.
2. 문자열 바로 대입
>>>"I eat %s apples." %five
'I eat five apples.'
문자열 포멧코드 %s를 사용하여 문자열 대입
3. 숫자 값을 나타내는 변수로 대입
>>> number = 3
>>> "I eat %d apples." %number
'I eat 3 apples.'
%문자 뒤에 변수 대입.
문자열 포맷코드
코드 설명 %s 문자열(String) %c 문자 1개(character) %d 정수(Integer) %f 부동소수(floating-point) %o 8진수 %x 16진수 %% Literal % (문자 % 자체) 여기에서 재미있는 것은 %s 포멧 코드인데, 이 코드는 어떤 형태의 값이든 변환해 넣을 수 있다.
>>> " I have %s apples." % 3
'I have 3 apples.'
>>>"rate is %s" %3.234
'rate is 3.234'
3을 문자열 안에 삽입하려면 %d 를 사용하고, 3.234를 삽입하려면 %f 를 사용해야 한다.
하지만 %s 를 사용하면 이런 것을 생각하지 않아도 된다. 왜냐하면 %s는 자동으로
% 뒤에 있는 값을 문자열로 바꾸기 때문이다.
[포매팅 연산자 %d와 %를 같이 쓸 때는 %%를 쓴다]
>>> "Error is %d%." % 98
위 예문의 결괏값으로 파이썬은 값이 올바르지 않다는 값 오류(Value Error) 메시지를 보여 준다.
Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: incomplete format
이유는 문자열 포맷 코드인 %d와 %가 같은 문자열 안에 존재하는 경우, %를 나타내려면 반드시 %%로 써야 하는 법칙이 있기 때문이다. 이 점은 꼭 기억해 두어야 한다. 하지만 문자열 안에 %d 같은 포매팅 연산자가 없으면 %는 홀로 쓰여도 상관이 없다.
따라서 위 예를 제대로 실행 하려면 다음과 같이 해야 한다.
>>> "Error is %d%%." % 98
'Error is 98%.'
포멧 코드와 숫자 함께 사용하기
%d , %s 등의 포멧 코드는 문자열 안에 어떤 값을 삽입하기 위해 사용한다.
하지만 포멧 코드를 숫자와 함께 사용하면 더 유용하게 사용 할수 있다.
정렬과 공백
>>> "%10s" %"hi"
' hi'
전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽 정렬하고 그 앞의 나머지는 공백으로 남겨두라는 의미.
반대로 왼쪽 정렬은 %-10s가 된다.
>>> "%-10sjane." % 'hi'
'hi jane.'
소수점 표현하기
>>> "%0.4f" %3.42134234
'3.4213'
소수점 네번째 자리까지만 나타내고 싶은 경우 위와 같이 사용한다.
'.'의 의미는 소수점 포인트를 말하고 그 뒤의 숫자 4는 소수점 뒤에 나올 숫자의 개수를 말한다.
>>>"%10.4f" %3.42134234
' 3.4213'
소수점 네 번째 자리까지만 표시하고 전체 길이가 10개인 문자열 공간에서 오른쪽 정렬하는 의미
format 함수를 사용한 포매팅
문자열의 format 함수를 사용하면 좀 더 발전된 스타일로 문자열 포맷을 지정할 수 있다.앞에서 살펴본 문자열 포매팅 예제를 format 함수를 사용해서 바꾸면 다음과 같다.
숫자 바로 대입하기
>>> "I eat {0} apples".format(3) 'I eat 3 apples'
문자열 바로 대입하기
>>>" I eat {0} apples.".format("five")'I eat five apples'
숫자 값을 가진 변수로 대입하기
>>> number = 3
>>> "I eat {0} apples".format(number)
'I eat 3 apples'
이름으로 넣기
>>> "I ate {number} apples. so I was sick for {day} days.".format(number=10, day=3)
'I ate 10 apples. so I was sick for 3 days.'
{name} 형태를 사용할 경우 format 함수에는 반드시 name = value 와 같은 형태의 입력값이 있어야만 한다.
위 예는 문자열의 {number},{day}가 format 함수의 입력값인 number = 10, day = 3 값으로 각각 바뀌는 것을 보여주고 있다.
왼쪽 정렬
>>>"{0:<10}".format("hi")
'hi '
:<10 표현식을 사용하면 치환되는 문자열을 왼쪽으로 정렬하고 문자열으 총 자릿수를 10으로 맞출 수 있다.
오른쪽 정렬
>>> "{0:>10}".format("hi")
' hi'
오른쪽 정렬은 :> 를 사용하면 된다 화살표 방향을 생각하면 어느 쪽으로 정렬 되는지 바로 알 수 있을 것이다.
가운데 정렬
>>> "{0:^10}".format("hi")
' hi '
:^ 기호를 사용하면 가운데 정렬도 가능하다.
공백 채우기
>>> "{0:=^10}".format("hi")
'====hi===='
>>>"{0:!<10}".format("hi")
'hi!!!!!!!!!'
정렬할 때 공백 문자 대신에 지정한 문자 값으로 채워 넣는 것 도 가능하다. 채워 넣을 문자 값은 정렬문자 <,>,^ 바로 앞에 넣어야 한다. 위 예에서 첫 번째 예제는 가운데 ^로 정렬하고 빈 공간을 = 문자로 채웠고,
두번째 예제는 왼쪽 < 정렬하고 빈 공간을 ! 문자로 채웠다.
소수점 표현하기
>>> y = 3.42134234
>>> "{0:0.4f}".format(y)
'3.4213'
>>> "{0:10.4f}".format(y)
' 3.4213'
{ 또는 } 문자 표현하기
>>> "{{and}}".format()
'{and}'
{} 와 같은 중괄호 문자를 포매팅 문자가 아닌 문자 그대로 사용하고 싶은 경우에는 위 예의 {{}} 처럼 2개를 연속해서 사용하면 된다.
f문자열 포매팅
파이썬 3.6버전 부터는 f 문자열 포매팅 기능을 사용할 수 있다.
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age} 입니다.'
'나의 이름은 홍길동입니다. 나이는 30 입니다.'
f 문자열 포매팅은 위와 같이 name,age와 같은 변수 값을 생성한 후에 그 값을 참조할 수 있다.
f 문자열 포매팅 표현식
f 문자열 포매팅은 표현식을 지원한다
표현식이란 문자열 안에서 변수와 +,- 와 같은 수식을 함께 사용하는 것을 말한다.
>>> age = 30
>>> f'나는 내년이면 {age+1}살이 된다.'
'나는 내년이면 31살이 된다.
f 문자열 포매팅 딕셔너리
딕셔너리는 Key 와 Value라는 것으로 한 쌍으로 갖는 자료형이다.
>>>d = {'name':'홍길동','age':30}
>>>f'나의 이름은 {d["name"]}'입니다. 나이는 {d["age"]} 입니다.'
'나의 이름은 홍길동 입니다. 나이는 30 입니다.'
f 문자열 포매팅 정렬
정렬은 다음과 같이 할수 있다.
< 왼쪽 정렬 ^ 가운데 정렬 > 오른쪽 정렬 실행결과 f 문자열 포매팅 공백 채우기
가운데 정렬 후 공백 '=' , 왼쪽 정렬후 공백 '!',오른쪽 정렬후 공백 '@' 실행결과