Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Archives
Today
Total
관리 메뉴

Ubermensch

파이썬 문자열 연산 본문

Python

파이썬 문자열 연산

now.ubermensch 2019. 2. 2. 22:49

파이썬 문자열 연산

파이썬에서는 문자열을 더하거나 곱할 수 있다.

  1. 문자열 더해서 연결(Concatenation)
first = "Let me"
>>> second = "love you"
>>> first + second
'Let melove you'
  1. 문자열 곱하기

숫자의 곱하기와는 다르다. 문자열의 곱하기는 그 수만큼 반복하라는 뜻이다.

a = "I'm the one I should love"
>>> a*2
"I'm the one I should loveI'm the one I should love"
  1. 문자열 곱하기 응용
#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) : 문자열 내에 어떤 값을 삽입하는 방법

문자열 포매팅 실습

  1. 숫자 바로 대입
>>> "I eat %d apples" %3
'I eat 3 apples'

문자열 내에 3이라는 정수를 삽입하는 방법이다. 넣고싶은 위치에 %d라는 문자를 넣어주고, 실제로 넣을 값은 %문자 다음에 적어준다. 이런 %d같은 문자를 문자열 포맷 코드라고 부른다.

  1. 문자열 바로 대입
"So if %s is nothing more" %"love"
'So if love is nothing more'

문자열을 대입하기 위한 포맷코드는 %s이다. 문자열 대입 시에도 ",' 등을 이용하여 문자열인걸 표기해야 한다.

  1. 숫자 값을 나타내는 변수로 대입
>>> number = 5
>>> "I eat %d apples" %number
'I eat 5 apples'

숫자를 바로 써줘도 되지만, 숫자를 담고있는 변수를 이용해서 표현해도 된다.

  1. 두 개 이상의 값 넣기
>>> food = "cookies"
>>> number = 3
>>> "I eat %d %s" %(number,food)
'I eat 3 cookies'

위 처럼 괄호 안에 변수를 넣고 , 로 구분해주면 된다

 

문자열 포맷코드

코드설명
%s문자열(String)
%c문자 한 개(character)
%d정수(Integer)
%f부동소수(floating-point)
%o8진수
%x16진수
%%Literal % ('%'자체)

포맷코드 숫자랑 함께 쓰기

  1. 정렬과 공백
>>> "%10s" %"hello"
'     hello'
     hello
12345678910

%10s 는 문자열을 위한 공간 10개를 할당하라는 뜻이다. 실제 글자는 4개 이니 이는 오른쪽 정렬된다.

>>> "%-10s" %"hello"
'hello     '

오른쪽 정렬이 싫다면, -를 붙여서 왼쪽정렬하면 된다.

  1. 소수점 표현
>>> "%0.4f" %3.14159259
'3.1416'

소수점의 표현하고 싶은 자릿수까지 0.뒤에 써주면 그 만큼만 출력된다. 0대신 다른 수를 써주면, 그 만큼의 문자열 공간이 할당된다.

>>> "%10.4f" %3.14159259
'    3.1416'

 

문자열 관련 함수

  1. 문자 수 세기(count)
>>> cristal = "Cristal snow"
>>> cristal.count('s')
2

문자열에서 찾고자 하는 문자를 .count('여기')에 넣어주면, 문자열 내 존재하는 문자의 숫자가 나온다.

  1. 위치 알려주기(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 와 동일하지만, 찾고자 하는 문자가 없을 경우 에러를 뱉는다는 점이 다르다.

  1. 문자열 삽입(join)
>>> a=","
>>> a.join("abcd")
'a,b,c,d'

.join() 을 이용하면, 각 문자 사이에 지정한 문자를 넣어준다.

  1. 소문자를 대문자로 바꾸기(upper)
>>> a="hello world"
>>> a.upper()
'HELLO WORLD'
  1. 대문자를 소문자로 바꾸기(lower)
>>> a= "LOVE MAZE"
>>> a.lower()
'love maze'
  1. 왼쪽 공백 지우기(lstrip)
>>> a="       그럴땐 내게 집중해"
>>> a.lstrip()
'그럴땐 내게 집중해'
  1. 오른쪽 공백 지우기(rstrip)
a="내 손을 놓지마 미로 속에서        "
>>> a.rstrip()
'내 손을 놓지마 미로 속에서'
  1. 양쪽 공백 지우기(strip)
>>> a="     이 모든게 꿈인 것 같아      "
>>> a.strip()
'이 모든게 꿈인 것 같아'
  1. 문자열 바꾸기(replace)
>>> a = "저는 지금 커피가 먹고 싶습니다."
>>> a.replace("커피","햄버거")
'저는 지금 햄버거가 먹고 싶습니다.'
  1. 문자열 나누기(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'

향상된 포맷을 사용하면, 포맷코드를 지정해주지 않고 인덱스 혹은 변수명의 개념으로 쉽고 빠르게 코드를 짤 수 있어서 좋다.

  1. 정렬

정렬도 향상된 포맷으로 사용 가능하다.

>>> "{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   '

가운데 정렬^ 를 이용해주면 된다.

  1. 공백 채우기
>>> "{0:=^10}".format("end")
'===end===='
>>> "{0:!<10}".format("oh")
'oh!!!!!!!!'
  1. 소수점 표현
>>> 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