Ubermensch
파이썬 문자열 연산 본문
파이썬 문자열 연산
파이썬에서는 문자열을 더하거나 곱할 수 있다.
- 문자열 더해서 연결(Concatenation)
first = "Let me"
>>> second = "love you"
>>> first + second
'Let melove you'
- 문자열 곱하기
숫자의 곱하기와는 다르다. 문자열의 곱하기는 그 수만큼 반복하라는 뜻이다.
a = "I'm the one I should love"
>>> a*2
"I'm the one I should loveI'm the one I should love"
- 문자열 곱하기 응용
#multiString.py
print("=" * 50)
print("My Python Program")
print("=" * 50)
/Users/eunjung/PycharmProjects/pythonPractice/venv/bin/python /Users/eunjung/PycharmProjects/pythonPractice/python1.py
==================================================
My Python Program
==================================================
Process finished with exit code
문자열 인덱싱과 슬라이싱
인덱싱(Indexing) : 문자열의 특정 위치를 가리킨다
슬라이싱(Slicing) : 문자열을 잘라낸다
- 인덱싱
>>> str = 'abcdefg'
>>> str[2]
'c'
str[2] 는 str문자열의 2번 인덱스를 읽어오라는 뜻이다. Python의 index는 0부터 시작하기 때문에 2번 인덱스는 세번째문자가 된다. 따라서 c
>>> str[-1]
'g'
>>> str[0]
'a'
>>> str[-0]
'a'
-1의 경우는, 뒤에서부터 하나 읽어오란 뜻이고, 0이나 -0이나 둘 다 0이기 때문에 둘 결과는 같다.
- 슬라이싱
>>> stigma = "더 깊이 매일이 가슴만 아파져"
>>> mind = stigma[9:12]
>>> mind
'가슴만'
슬라이싱을 사용하기 위해서는 변수명[시작번호:끝번호+1]
형식으로 지정해주면 된다. 끝번호의 값은 가져오지 않기 때문에 가져올 값보다 하나 큰 값을 넣어줌 된다.
>>> wings = "Wings are made to fly fly fly"
>>> fly = wings[18:]
>>> fly
'fly fly fly'
변수명[시작번호:]
이렇게 끝번호가 없으면 문자열의 끝까지 뽑아온다.
>>> mic = "발발 조심 너네 말말 조심"
>>> mic[:]
'발발 조심 너네 말말 조심'
변수명[:]
이렇게 시작번호, 끝번호 다 생략하면 문자열 전체를 뽑아온다.
인덱싱처럼 -기호를 사용해서 뒤 부터 잘라올 수도 있다.
>>> mic[:-2]
'발발 조심 너네 말말 '
문자열 포매팅
포매팅(Formatting) : 문자열 내에 어떤 값을 삽입하는 방법
문자열 포매팅 실습
- 숫자 바로 대입
>>> "I eat %d apples" %3
'I eat 3 apples'
문자열 내에 3이라는 정수를 삽입하는 방법이다. 넣고싶은 위치에 %d라는 문자를 넣어주고, 실제로 넣을 값은 %문자 다음에 적어준다. 이런 %d같은 문자를 문자열 포맷 코드라고 부른다.
- 문자열 바로 대입
"So if %s is nothing more" %"love"
'So if love is nothing more'
문자열을 대입하기 위한 포맷코드는 %s이다. 문자열 대입 시에도 ",' 등을 이용하여 문자열인걸 표기해야 한다.
- 숫자 값을 나타내는 변수로 대입
>>> number = 5
>>> "I eat %d apples" %number
'I eat 5 apples'
숫자를 바로 써줘도 되지만, 숫자를 담고있는 변수를 이용해서 표현해도 된다.
- 두 개 이상의 값 넣기
>>> food = "cookies"
>>> number = 3
>>> "I eat %d %s" %(number,food)
'I eat 3 cookies'
위 처럼 괄호 안에 변수를 넣고 , 로 구분해주면 된다
문자열 포맷코드
코드 | 설명 |
---|---|
%s | 문자열(String) |
%c | 문자 한 개(character) |
%d | 정수(Integer) |
%f | 부동소수(floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal % ('%'자체) |
포맷코드 숫자랑 함께 쓰기
- 정렬과 공백
>>> "%10s" %"hello"
' hello'
h | e | l | l | o | |||||
---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
%10s 는 문자열을 위한 공간 10개를 할당하라는 뜻이다. 실제 글자는 4개 이니 이는 오른쪽 정렬된다.
>>> "%-10s" %"hello"
'hello '
오른쪽 정렬이 싫다면, -를 붙여서 왼쪽정렬하면 된다.
- 소수점 표현
>>> "%0.4f" %3.14159259
'3.1416'
소수점의 표현하고 싶은 자릿수까지 0.뒤에 써주면 그 만큼만 출력된다. 0대신 다른 수를 써주면, 그 만큼의 문자열 공간이 할당된다.
>>> "%10.4f" %3.14159259
' 3.1416'
문자열 관련 함수
- 문자 수 세기(count)
>>> cristal = "Cristal snow"
>>> cristal.count('s')
2
문자열에서 찾고자 하는 문자를 .count('여기')에 넣어주면, 문자열 내 존재하는 문자의 숫자가 나온다.
- 위치 알려주기(find)
>>> neverMind = "부딪힐 것 같으면 더 세게 밟아 임마 Never mind never mind"
>>> neverMind.find('never')
32
>>> neverMind.find('love')
-1
.find(여기)에 찾고자 하는 문자를 넣으면 처음 나온 위치를 알려준다. 없으면 -1 을 반환한다
>>> neverMind.index('never')
32
>>> neverMind.index('love')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
.index() 도 .find 와 동일하지만, 찾고자 하는 문자가 없을 경우 에러를 뱉는다는 점이 다르다.
- 문자열 삽입(join)
>>> a=","
>>> a.join("abcd")
'a,b,c,d'
.join() 을 이용하면, 각 문자 사이에 지정한 문자를 넣어준다.
- 소문자를 대문자로 바꾸기(upper)
>>> a="hello world"
>>> a.upper()
'HELLO WORLD'
- 대문자를 소문자로 바꾸기(lower)
>>> a= "LOVE MAZE"
>>> a.lower()
'love maze'
- 왼쪽 공백 지우기(lstrip)
>>> a=" 그럴땐 내게 집중해"
>>> a.lstrip()
'그럴땐 내게 집중해'
- 오른쪽 공백 지우기(rstrip)
a="내 손을 놓지마 미로 속에서 "
>>> a.rstrip()
'내 손을 놓지마 미로 속에서'
- 양쪽 공백 지우기(strip)
>>> a=" 이 모든게 꿈인 것 같아 "
>>> a.strip()
'이 모든게 꿈인 것 같아'
- 문자열 바꾸기(replace)
>>> a = "저는 지금 커피가 먹고 싶습니다."
>>> a.replace("커피","햄버거")
'저는 지금 햄버거가 먹고 싶습니다.'
- 문자열 나누기(split)
>>> a="시간을 멈출래 이 순간이 지나면"
>>> a.split()
['시간을', '멈출래', '이', '순간이', '지나면']
>>> a="내게:약속해:줄래"
>>> a.split(':')
['내게', '약속해', '줄래']
.split() 의 괄호 안에 아무것도 안 넣어주면, 공백을 기준으로 문자를 나누어 리스트에 넣어준다.
괄호 안에 특정 문자를 넣어주면, 그 값을 기준으로 문자를 나누어 리스트에 넣는다.
고급 문자열 포매팅
위에 설명한 방법들은 기본적인 방법이고, 좀 더 향상된 스타일의 포매팅 방법도 있다.
>>> "I eat {0} apples".format(3)
'I eat 3 apples'
>>> "I eat {0} apples".format("five")
'I eat five apples'
>>> "I eat {0} {1}".format("two","cookies")
'I eat two cookies'
>>> "I eat {number} apples".format(number=5)
'I eat 5 apples'
>>> "I ate {0} apples. so I was sick for {day} days".format(100, day=3)
'I ate 100 apples. so I was sick for 3 days'
향상된 포맷을 사용하면, 포맷코드를 지정해주지 않고 인덱스 혹은 변수명의 개념으로 쉽고 빠르게 코드를 짤 수 있어서 좋다.
- 정렬
정렬도 향상된 포맷으로 사용 가능하다.
>>> "{0:10}".format('not today')
'not today '
>>> "{0:10}".format('today')
'today '
>>> "{0:<10}".format('today')
'today '
>>> "{0:>10}".format('toady')
' toady'
>>> "{0:^10}".format('today')
' today '
가운데 정렬은 ^ 를 이용해주면 된다.
- 공백 채우기
>>> "{0:=^10}".format("end")
'===end===='
>>> "{0:!<10}".format("oh")
'oh!!!!!!!!'
- 소수점 표현
>>> y=3.141592987654321
>>> "{0:0.4f}".format(y)
'3.1416'
>>> "{0:10.4f}".format(y)
' 3.1416'
'Python' 카테고리의 다른 글
Mac OS X Python 가상환경 설정하기 (0) | 2019.02.12 |
---|---|
파이썬 튜플 자료형 (0) | 2019.02.05 |
파이썬 리스트 자료형 (0) | 2019.02.05 |
파이썬 자료형 - 숫자형 , 문자형 (0) | 2019.02.02 |
파이썬 시작하기 (0) | 2019.02.02 |