파이썬에서는 문자열을 더하거나 곱할 수 있다.
파이썬만의 장점이다.
1. 문자열 더해서 연결하기
head = "Python"
tail = "is fun"
head + tail
'python is fun!'
2. 문자열 곱하기
a = "Python"
a * 2
'pythonpython'
3. 문자열 곱하기 응용
#multistring.py
print("=" * 50)
print("My Program")
print("=" * 50)
라고 쓰면, 아래와 같은 결괏값이 나타날 것이다.
이런 식의 표현은 앞으로 자주 사용하게 될 것이다. 프로그램을 만들어 실행시켰을 때 출력되는 화면 제일 위쪽에 프로그램 제목을 이와같이 하면 깔끔하고 보기 좋다.
4. 문자열 길이 구하기
문자열의 길이는 len함수를 사용하면 구할 수 있다.
len함수는 print 함수처럼 파이썬의 기본 내장 함수로 별다른 설정 없이 바로 사용할 수 있다.
a = "Life is too shoer"
len(a)
17
문자열 인덱싱과 슬라이싱
문자열 인덱싱이란?
예를 실행해 알아보자.
a =" Life is too short, You need Pyhon"
a[3]
'e'
a[3]이 뜻하는 것은 a라는 문자열의 네 번째 문자 e를 말한다.
숫자3이 왜 네번째 문자인가?
답은 "파이썬은 0부터 숫자를 센다."
문자열 인덱싱 활용하기
예를 몇 가지 더 보자.
a = "Life is too short, You need Python"
a[0]
'L'
a[12]
's'
a[-1]
'n'
-1 은 뒤에서부터 세어 첫 번째가 되는 문자를 말한다, 따라서 n 이다.
(-0과 0은 참고로 똑같다.)
문자열 슬라이싱이란?
단순히 한 문자만 뽑아내는 것이 아니라 You 와 같은 단어를 뽑아내는 방법이다.
a = "Life is too short, You need Python"
b = a[0] + a[1] + a[2] + a[3]
b
'life'
위 방법 또는 더 좋은 방법으로 아래를 보자.
a = "Life is too short, You need Python"
a[0:4]
'Life'
a[0:4]가 뜻하는 것은 a 문자열, 즉자리번호 0부터 4까지의 문자를 뽑아낸다는 뜻이다.
a[0:3]
'Lif'
이렇게 되는 이유는 간단하다. 슬라이싱 기법으로 a[시작 번호:끝 번호]를 지정할 때 끝 번호에 해당하는 것은 포함하지 않기 때문이다.
문자열을 슬라이싱하는 방법
a[0:5]
'Life'
위 예는 a[0] + a[1] + a[2] + a[3] + a[4]와 동일하다. a[4]는 공백 문자이기 때문에 'Life'가 아닌 'Life'가 출력된다. 공백 문자 역시 L, i, f, e 같은 문자와 동일하게 취급되는 것을 잊지말자.
'Life'와 'Life'는 완전히 다른 문자열이다.
슬라이싱으로 문자열 나누기
다음은 자주 사용하게 되는 슬라이싱 기법 중 하나이다.
a = "20010331Rainy"
date = a[:8]
weather = a[8:]
date
'20010331'
weather
'Rainy'
위 에는 문자열 a를 두 부분으로 나누는 기법이다. 숫자 8을 기준으로 문자열 a를 양쪽으로 한번씩 슬라이싱했다.
a[:8]은 a[8]이 포함되지 않고, a[8:]은 a[8]을 포함하기 때문에 8을 기준으로 해서 두 부분으로 나눌 수 있는 것이다.
위 예에서는 날짜를 나타내는 부분인 '20010331'과 날씨를 나타내는 'Rainy'로 나누는 방법을 보여 준다.
a = "20010331Rainy"
year = a[:4] 처음부터 a[3]까지
day = a[4:8] a[4]부터 a[7]까지
weather = a[8:] a[8]부터 마지막까지
year
'2001'
day
'0331'
weahter
'Rainy'
위 예는 숫자 4와 8로 "20010331Rainy" 문자열을 세 부분으로 나누는 방법을 보여 준다.
문자열 포매팅
1. 숫자 바로 대입
" I eat %d apples." %3
'I eat 3 apples.'
정수 3을 삽입하는 방법을 보여준다.
2. 문자열 바로 대입
"I eat %s apples." % "five"
'I eat five apples.'
3. 숫자 값을 나타내는 변수로 대입
number = 3
"I eat %d apples." %number
'I eat 3 apples.'
4. 2개 이상의 값 넣기
number = 10
day = "three"
"I ate %d apples. so I was sick for %s days." %(number, day)
'I ate 10 apples. so I was sick for three days.'
위 예문처럼 2개 이상의 값을 넣으려면 마지막 % 다음 괄호 안에 콤마(,)로 구분하여 각각의 값을 넣어 주면 된다.
포맷 코드와 숫자 함께 사용하기
1. 정렬과 공백
"%10s" % "hi"
' hi' hi가 오른쪽 정렬됨
"%-10sjane" % 'hi'
'hi jane' hi가 왼족 정렬됨
hi를 왼쪽으로 정렬하고 나머지는 공백으로 채웠음을 볼 수 있다.
2. 소수점 표현하기
"%0.4f"% 3.42134234
'3.4213'
3.42134234를 소수점 네 번째 자리까지만 나타내고 싶은 경우에는 위와 같이 사용한다. 즉 여기서 '.'의 의미는 소수점 포인트를 말하고 그 뒤의 숫자 4는 소수점 뒤에 나올 숫자의 개수를 말한다. 다음 예를 보자.
"%10.4f" % 3.42134234
' 3.4213'
3.42134234를 소수점 네 번째 자리까지만 표시하고 전체 길이가 10개인 문자열 공간에서 오른쪽으로 정렬하는 예를 보여 준다.
format 함수를 사용한 포매팅
숫자 바로 대입하기
"I eat {0} apples". format(3)
'I eat 3apples'
'I eat 3apples'문자열 중 {0}부분이 숫자 3으로 바뀌었다.
문자열 바로 대입하기
"I eat {0} apples".format("five")
'I eat five apples'
문자열의 {0} 항목이 five라는 문자열로 바뀌었다.
숫자 값을 가진 변수로 대입하기
number = 3
"I eat {0} apples". format(number)
'I eat apples'
문자열의 {0} 항목이 number 변수값인 3으로 바뀌었다.
2개 이상의 값 넣기
number = 10
day = "three"
"I ate {0} apples. so I was sick for {1} days.".format(number, day)
'I ate 10 apples. so I was sick for three days.'
2개 이상의 값을 넣을 경우 문자열의 {0},{1}과 같은 인덱스 항목이 format 함수의 입력값으로 순서에 맞게 바뀐다.
이름으로 넣기
"I eat {number} apples. so I was sick for {day}.".format(number=10, day=3)
'I was 10 apples. so I was sick for days.'
위 예에서 볼 수 있듯이 {0},{1}과 같은 인덱스 항목 대신 더 편리한 {name}형태를 사용하는 방법도 있다.
{name}, 형태를 사용할 경우 format 함수에는 반드시 name=value 와 같은 현태의 입력값이 있어야만 한다.
인덱스와 이름을 혼용해서 넣기
"I ate {0} apples. so i was sick for {day} days.".format(10, day=3)
'I ate 10 apples. si I was sick for 3 days.'
위와 같이 인덱스 항목과 name=value 형태를 혼용하는 것도 가능하다.
왼쪽 정렬
"{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'
위 예는 format 함수를 사용해 소수점을 4자리까지만 표현하는 방법을 보여 준다. 앞에서 살펴보았던 표현식 0.4f 를 그대로 사용한 것을 알 수 있다.
{ 또는 } 문자 표현하기
"{{ and }}".format()
'{ and }'
format 함수를 사용해 문자열 포매팅을 항 경우 {}와 같은 중괄호(brace) 문자를 포매팅 문자가 아닌 문자 그대로 사용하고 싶은 경우에는 위 예의 {{}}처럼 2개를 연속해서 사용하면 된다.
f 문자열 포매팅
파이썬 3.6버전부터는 f 문자열 포매팅 기능을 사용할 수 있다. 파이썬 3.6미만 버전에는 사용 불가능.
name = '금동훈'
age = 30
f'나의 이름은 {name} 입니다. 나이는 {age}입니다.'
'나의 이름은 금동훈입니다. 나이는 30입니다.'
f문자열 포매팅은 위와 같이 name, age와 같은 변수 값을 생성한 후에 그 값을 참조할 수 있다.
딕셔너리는 f 문자열 포매팅에서 다음과 같이 사용 할 수 있다.
d = { 'name' :'홍길동' , 'age':30}
f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
정렬은 다음과 같이 할 수 있다.
f'{"hi":<10}'
'hi '
f'{"hi":>10}'
' hi'
f'{"hi":^10}'
' hi '
공백 채우기는 다음과 같이 할 수 있다.
f'{"hi":=^10}'
'====hi===='
f'{"fi":!<10}'
'hi!!!!!!!!'
소수점은 다음과 같이 표현할 수 있다.
y = 3.42134234
f'{y:0.4f}' 소수점 4자리까지만 표현
'3.4213'
f'{y:10.4f}' 소수점 4자리까지 표현하고 총 자릿수를 10으로 맞춤
' 3.4213'
f문자열 에서 {}문자를 표시하려면 다음과 같이 두 개를 동시에 사용해야 한다.
f'{{ and }}'
'{ and }'
문자열 관련 함수
문자 개수 세기(count)
a = "hobby"
a.count('b')
2
문자열 중 문자 b의 개수를 돌려준다.
위치 알려주기 1 (find)
a = "Python is the best choice"
a.find('b')
14
a.find('k')
-1
위치 알려주기 2 (index)
a = "Life is too short"
a.index('t')
8
a.index('k')
Traceback (most recent call last):
file "<stdin>", line 1, in <module>
ValueError: substring not found
문자열 삽입 (join)
",".join('abcd')
'a,b,c,d'
abcd 문자열의 각각의 문자 사이에 ','를 삽입한다.
",".join(['a','b','c','d'])
'a,b,c,d'
소문자를 대문자로 바꾸기
a= "hi"
a.upper()
'HI'
upper 함수는 소문자를 대문자로 바꾸 준다.
대문자를 소문자로 바꾸기
a = "HI"
a.lower()
'hi'
lower함수는 대문자를 소문자로
왼쪽 공백 지우기
a = " hi "
a.lstrip()
'hi '
오른쪽 공백 지우기
a= " hi "
a.rstrip()
' hi'
양쪽 공백 지우기
a = " hi "
a.strip()
'hi'
문자열 바꾸기
a = "Life is too short"
a.replace ("Life", "Your leg")
'Your leg is too short'
replace(바뀌게 될 문자열, 바꿀 문자열) 처럼 사용해서 문자열 안의 특정한 값을 다른 값으로 치환해 준다.
문자열 나누기
a= 'Life is too short'
a.split() 공백을 기준으로 문자열 나눔
['Life', 'is', 'too', 'short']
b= "a:b:c:d"
b.split(':') :기호를 기준으로 문자열 나눔
['a', 'b', 'c', 'd']
위에서 소개한 문자열 관련 함수는 관련 함수는 문자열 처리에서 사용 빈도가 매우 높고 유용하다. 이 외 에도 몇 가지가 더 있지만 자주 사용되지는 않는다.
출처 : "점프투파이썬"
'파이썬 기초' 카테고리의 다른 글
02-4 튜플 자료형 (0) | 2021.03.13 |
---|---|
02-3 리스트 자료형 (0) | 2021.03.13 |
02- 2 문자열 자료형 - 2 (0) | 2021.03.04 |
02-2 문자열 자료형 (0) | 2021.03.01 |
02-1 프로그래밍의 기초, 자료형 (숫자형) (0) | 2021.03.01 |