본문 바로가기

Programming/Phython

[파이썬] 3. 문자열

반응형

파이썬에서의 문자열 자료형 표현 방법 4가지

 

1. 큰따옴표(")로 양쪽 둘러싸기

"Hello 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. 문자열 안에 작은따옴표나 큰따옴표를 포함시키고 싶을 때
  2. 여러 줄인 문자열을 변수에 대입하고 싶을 때

 

1. 문자열 안에 작은따옴표나 큰따옴표를 포함시키고 싶을 때

food = "Python's favorite food is perl"
say = '"Python is very easy." he says.'
food = 'Python\'s favorite food is perl'

say = "\"Python is very easy.\" he says."

백슬래시(\)를 작은따옴표(')나 큰따옴표(") 앞에 삽입하면 백슬래시(\) 뒤의 작은따옴표(')나 큰따옴표(")는 문자열을 둘러싸는 기호의 의미가 아니라 문자 ('), (") 그 자체를 뜻하게 된다.

 

2. 여러 줄인 문자열을 변수에 대입하고 싶을 때

multiline = "Life is too short\nYou need python"
>>> multiline='''
... Life is too short
... You need python
... '''
>>> multiline="""
... Life is too short
... You need python
... """
코드 설명
\n 문자열 안에서 줄을 바꿀 때 사용
\t 문자열 사이에 탭 간격을 줄 때 사용
\\ 문자 \를 그대로 표현할 때 사용
\' 작은따옴표(')를 그대로 표현할 때 사용
\'' 큰따옴표(")를 그대로 표현할 때 사용

 

문자열 연산하기

다른 언어와 달리 파이썬은 문자열을 더하거나 곱할 수 있다. (이게 말이 돼?)

 

>>> head = "Python"
>>> tail = " is fun!"
>>> head + tail
'Python is fun!'
>>> a = "python"
>>> a * 2
'pythonpython'

 

# multistring.py

print("=" * 50)
print("My Program")
print("=" * 50)

결과

C:\Users>cd C:\doit
C:\doit>python multistring.py
==================================================
My Program
==================================================

 

문자열 길이 구하기

>>> a = "Life is too short"
>>> len(a)
17

 

문자열 인덱싱

>>> a = "Life is too short, You need Python"

Life is too short, You need Python
0         1         2         3 
0123456789012345678901234567890123
>>> a = "Life is too short, You need Python"

>>> a[3]
'e'
>>> a[0]
'L'
>>> a[12]
's'
>>> a[-1]
'n'

-0과 0은 같기 때문에 뒤에서 첫번째 문자가 'n'이라는 사실에 주의한다. 

 

 

문자열 슬라이싱

>>> a = "Life is too short, You need Python"

>>> a[0:4]
'Life'

>>> a[0:3]
'Lif'

>>> a[0:5]
'Life '

>>> a[0:2]
'Li'

>>> a[5:7]
'is'

>>> a[12:17]
'short'

>>> a[19:]
'You need Python'

>>> a[:17]
'Life is too short'

>>> a[:]
'Life is too short, You need Python'

>>> a[19:-7]
'You need'

번호를 지정할때 끝 번호는 포함하지 않는다. 숫자를 생략할 경우 끝까지를 가리킨다.

 

>>> a = "20010331Rainy"

>>> date = a[:8]
>>> weather = a[8:]

>>> date
'20010331'

>>> weather
'Rainy'

>>> year = a[:4]
>>> day = a[4:8]
>>> weather = a[8:]

>>> year
'2001'

>>> day
'0331'

>>> weather
'Rainy'

 

>>> a = "Pithon"
>>> a[:1]
'P'
>>> a[2:]
'thon'
>>> a[:1] + 'y' + a[2:]
'Python'

문자열의 요솟값은 바꿀 수 있는 값이 아니다. (문자열의 자료형은 그 요솟값을 변경할 수 없는 immutable한 자료형이다.)

 

 

문자열 포매팅

문자열 안의 특정한 값을 바꿔야 할 경우가 있을 때 사용하는 기법

즉, 문자열 안에 어떤 값을 삽입하는 방법

 

1. 숫자 바로 대입

>>> "I eat %d apples." % 3
'I eat 3 apples.'

%d는 숫자열 포맷코드로, C언어에서의 서식문자를 대체한다

넣고 싶은 자리와 넣을 숫자와함께 사용한다.

 

2. 문자열 바로 대입

>>> "I eat %s apples." % "five"
'I eat five apples.'

%s는 문자열 포맷코드이다. 문자열 대입시엔 "이나 '를 사용해야 한다.

 

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.'

 

문자열 포맷 코드

코드 설명
%s 문자열
%c 문자 1개
%d 정수
%f 부동소수
%% 문자 %를 표현

%s 포맷 코드

>>> "I have %s apples" % 3
'I have 3 apples'
>>> "rate is %s" % 3.234
'rate is 3.234'

자동으로 % 뒤에 있는 값을 문자열로 바꾸기 때문에 어떤 형태의 값이든 변환해 넣을 수 있다.

 

%% 포맷 코드

>>> "Error is %d%%." % 98
'Error is 98%.'

 

포맷 코드와 숫자 함께 사용하기

1. 정렬과 공백

>>> "%10s" % "hi"
'        hi'
>>> "%-10sjane." % 'hi'
'hi        jane.'

2. 소수점 표현하기

>>> "%0.4f" % 3.42134234
'3.4213'
>>> "%10.4f" % 3.42134234
'    3.4213'

 

format 함수를 사용한 포매팅

1. 숫자 바로 대입하기

>>> "I eat {0} apples".format(3)
'I eat 3 apples'

2. 문자열 바로 대입하기

>>> "I eat {0} apples".format("five")
'I eat five apples'

3. 숫자 값을 가진 변수로 대입하기

>>> number = 3
>>> "I eat {0} apples".format(number)
'I eat 3 apples'

4. 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.'

5. 이름으로 넣기

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

6. 인덱스와 이름을 혼용해서 넣기

>>> "I ate {0} apples. so I was sick for {day} days.".format(10, day=3)
'I ate 10 apples. so I was sick for 3 days.'

7. 정렬

>>> "{0:<10}".format("hi")
'hi        '

>>> "{0:>10}".format("hi")
'        hi'

>>> "{0:^10}".format("hi")
'    hi    '

8. 공백 채우기

>>> "{0:=^10}".format("hi")
'====hi===='
>>> "{0:!<10}".format("hi")
'hi!!!!!!!!'

9. 소수점 표현하기

>>> y = 3.42134234
>>> "{0:0.4f}".format(y)
'3.4213'

>>> "{0:10.4f}".format(y)
'    3.4213'

10. '{' 또는 '}' 표현하기

>>> "{{ and }}".format()
'{ and }'

 

f문자열 포매팅

>>> name = '홍길동'
>>> age = 30

>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'

>>> f'나는 내년이면 {age+1}살이 된다.'
'나는 내년이면 31살이 된다.'

>>> d = {'name':'홍길동', 'age':30}

>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'

f문자열 포매팅은 문자열 안에서 변수와 수식을 함께 사용하는 표현식을 지원한다.

또한 키와 값을 한 쌍으로 갖는 딕셔너리도 사용할 수 있다.

 

1. 정렬

>>> f'{"hi":<10}'  # 왼쪽 정렬
'hi        '
>>> f'{"hi":>10}'  # 오른쪽 정렬
'        hi'
>>> f'{"hi":^10}'  # 가운데 정렬
'    hi    '

 2. 공백 채우기

>>> f'{"hi":=^10}'  # 가운데 정렬하고 '=' 문자로 공백 채우기
'====hi===='
>>> f'{"hi":!<10}'  # 왼쪽 정렬하고 '!' 문자로 공백 채우기
'hi!!!!!!!!'

3. 소수점 표현

>>> y = 3.42134234
>>> f'{y:0.4f}'  # 소수점 4자리까지만 표현
'3.4213'
>>> f'{y:10.4f}'  # 소수점 4자리까지 표현하고 총 자리수를 10으로 맞춤
'    3.4213'

4. '{'와 '}' 표현

>>> f'{{ and }}'
'{ and }'

문자열 내장 함수

'문자열.내장 함수' 같은 형식으로 사용

 

1. 문자 개수 세기 (count)

>>> a = "hobby"
>>> a.count('b')
2

2. 위치 알려주기1 (find)

>>> a = "Python is the best choice"
>>> a.find('b')
14
>>> a.find('k')
-1

3. 위치 알려주기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

4. 문자열 삽입 (join)

>>> ",".join('abcd')
'a,b,c,d'

>>> ",".join(['a', 'b', 'c', 'd'])
'a,b,c,d'

리스트와 튜플도 입력으로 사용 가능

 

5. 소문자와 대문자 서로 변환 (upper, lower)

>>> a = "hi"
>>> a.upper()
'HI'

>>> a = "HI"
>>> a.lower()
'hi'

6. 공백 지우기 (lstrip, rstrip, strip)

>>> a = " hi "
>>> a.lstrip()
'hi '

>>> a= " hi "
>>> a.rstrip()
' hi'

>>> a = " hi "
>>> a.strip()
'hi'

7. 문자열 바꾸고 나누기 (replace, split)

>>> a = "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'

>>> a = "Life is too short"
>>> a.split()
['Life', 'is', 'too', 'short']
>>> b = "a:b:c:d"
>>> b.split(':')
['a', 'b', 'c', 'd']

 

반응형

'Programming > Phython' 카테고리의 다른 글

[파이썬] 5. 튜플  (0) 2021.02.11
[파이썬] 4. 리스트  (0) 2021.02.11
[파이썬] 2. 숫자형  (0) 2021.02.11
[파이썬] 1. 들여쓰기와 주석 그리고 파이썬 에디터  (0) 2021.02.10
파이썬 공부하기  (0) 2021.02.10