점프투파이썬_02_파이썬 프로그래밍의 기초, 자료형: 문자열

yh271·2022년 5월 10일
0

점프투파이썬

목록 보기
2/7
  1. 숫자형을 활용하기 위한 연산자
# 사칙연산
>>> a = 3
>>> b = 4
>>> a + b
7
>>> a * b
12

# a와 b를 나누기
>>> a / b
0.75

# a와 b를 나눈 몫
>>> a // b
0

# a의 b제곱
>>> a ** b
81

#7과 3을 나누었을 때 나머지
>>> 7 % 3
1
>>> 3 % 7
3
  1. 이스케이프 코드
\n : 문자열 안에서 줄을 바꿀 때 사용
\t : 문자열 사이에 탭 간격을 줄 때 사용
\\ : 문자 \를 그대로 표현할 때 사용
\' : 작은따옴표 (')를 그대로 표현할 때 사용
\" : 큰따옴표 (")를 그대로 표현할 때 사용
\r : 캐리지 리턴(줄 바꿈 문자, 현재 커서를 가장 앞으로 이동)
\f : 폼 피드(줄 바꿈 문자, 현재 커서를 다음 줄로 이동)
\a : 벨 소리(출력할 때 PC스피커에서 '삑'소리가 난다)
\b : 백스페이스
\000 : 널 문자

\n, \t, \\, \', \" 외의 것은 프로그램에서 잘 사용되지는 않음.
  1. 문자열 인덱싱

  2. 문자열 슬라이싱
    다음과 같은 문자열이 있을 경우

a = "Life is too short, You need Python"
a[0:4]는 a[0]~a[3]까지를 이르며,
a[19:-7]은 a[19]~a[-8]까지를 이른다.

슬라이싱으로 문자열 나누기

1) 에서 a[:8]은 a[8]이 포함되지 않고, a[8:]은 a[8]이 포함되기 때문에 8을 기준으로 두 부분으로 나눌 수 있는 것이다.
2) 	year = a[:4]	// 처음부터 a[3]까지
	day = a[4:8]	// a[4]부터 a[7]까지
    weather = a[8:]	// a[8]부터 마지막까지
  1. Pithon이라는 문자열을 Python으로 바꾸려면?

    단순하게 배열의 1번 요소에 접근해서 다른 문자열로 치환하는 것은 불가능하다. 왜냐하면 문자열 자료형은 그 요소의 값을 직접 변경할 수가 없기 때문이다. (immutable한 자료형)

그러나 슬라이싱을 이용해 Pithon이라는 문자열을 Python으로 바꿀 수 있다.

  1. 문자열 포매팅 (1)
# 숫자 바로 대입
>>> "l eat %d apples." % 3
'l eat 3 apples.'

# 문자열 바로 대입
>>> "l eat %s apples." % 'five'
'l eat five apples.'

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

# 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 : 문자열(String)
%c : 문자 1개(Character)
%d : 정수(Integer)
%f : 부동 소수(Floating-point)
%o : 8진수
%x : 16진수
%% : Literal % (문자 '%' 자체)

%s 포맷 코드는 어떤 형태의 값이든 변환해 넣을 수 있다. 자동으로 % 뒤에 있는 값을 문자열로 바꾼다.
ex)

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

%% : Literal %의 특수한 경우

# 1) 문자열 포맷 코드로 사용되는 %와 문자 그대로의 %가 같은 문자열 안에 존재하는 경우 에러 발생
>>> "Error is %d%." % 98
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: incomplete format

# 2) 1)과 같은 상황이고, %를 문자로 출력해야 한다면, '%%'와 같이 두 번 쓰도록 한다
>>> "Error is %d%%." % 98
'Error is 98%.'

# 3) 문자열 포맷 코드인 %d, %s 등이 없을 경우에는 %를 하나만 적어도 일반 문자열로 출력된다.
>>> "Error is 98%."
'Error is 98%.'
>>>
  1. 문자열 포매팅 (2)
    1) 정렬과 공백
#10칸 오른쪽 정렬
>>> "%10s" % 'hi'
'        hi'

#10칸 왼쪽 정렬
>>> "%-10sjane" % 'hi'
'hi        jane'
# 소수점 넷째자리까지만 표현
>>> "%0.4f" % 3.42134234
'3.4213'
# 10칸 오른쪽 정렬, 소수점 넷째자리까지만 표현
>>> "%10.4f" % 3.42134234
'    3.4213'


7. 문자열 포매팅 (3)
format 함수를 사용한 포매팅

# 숫자 직접 대입
>>> "I eat {0} apples".format(3)
'I eat 3 apples'

# 문자열 직접 대입
>>> "I eat {0} apples".format("five")
'I eat five apples'

# 문자열 안쪽의 {} 항목은 배열의 인덱스로 정의되어있다.
>>> "l eat {a} apples".format(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'a'

# 숫자 값을 가진 변수로 대입
>>> number = 3
>>> "I eat {0} apples".format(number)
'I eat 3 apples'

# 2개 이상의 값 넣기
number = 10
>>> day = 'three'
>>> "l ate {0} apples. so I was sick for {1} days.".format(number, day)
'l ate 10 apples. so I was sick for three days.'

# 이름으로 넣기
>>> "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.'

# 인덱스와 이름을 혼용해서 넣기
>>> "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.'

#왼쪽 정렬
>>> "{0:<10}".format("hi")
'hi        '

#오른쪽 정렬
"{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'

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

#{ 또는 } 문자 표현하기
>>> "{{ and }}".format()
'{ and }'
  1. 문자열 포매팅 (4)
    f 문자열 포매팅 (Python 3.6 미만 버전에서는 사용할 수 없음)
    딕셔너리로 f 문자열 포매팅을 사용할 때에는 작은 따옴표(')와, 큰 따옴표(")의 범위를 명백히 지정하는 것이 낫다.
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'

#f 문자열 포매팅은 표현식을 지원한다. (표현식: 문자열 안에서 변수와 +, - 와 같은 수식을 함께 사용하는 것)
>>> age = 30
>>> f'나는 내년이면 {age+1}살이 된다.'
'나는 내년이면 31살이 된다.'

# 딕셔너리 사용
>>> 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'{"hi":!<10}'
'hi!!!!!!!!'

# 소수점 표현
>>> y = 3.42134234
>>> f'{y:0.4f}'
'3.4213'
>>> f'{y:10.4f}'
'    3.4213'

# {} 문자 표현
>>> f'{{ and }}'
'{ and }'
  • 나혼자 코딩: format 함수 또는 f 문자열 포매팅을 사용해 '!!!python!!!' 문자열을 출력해 보자
>>> f'{"python":!^12}'
'!!!python!!!'
>>> "{0:!^12}".format("python")
'!!!python!!!'
  1. 문자열 관련 함수
# 문자 개수 세기
>>> a = "hobby"
>>> a.count('b')
2

find와 index의 차이는 find는 존재하지 않는 문자열을 값으로 넣으면 -1을 리턴하고, index는 오류를 발생시킨다는 점이다.

#위치 알려주기 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)
>>> ",".join('abcd')
'a,b,c,d'
>>>
>>> ",".join(['a','b','c','d'])
'a,b,c,d'
# 소문자를 대문자로 바꾸기(upper)
>>> a = "hi"
>>> a.upper()
'HI'
#대문자를 소문자로 바꾸기(lower)
>>> a = "HI"
>>> a.lower()
'hi'
# 왼쪽 공백 지우기(lstrip)
>>> a = "   hi   "
>>> a.lstrip()
'hi   '
# 오른쪽 공백 지우기(rstrip)
>>> a.rstrip()
'   hi'
# 양쪽 공백 지우기(strip)
>>> a.strip()
'hi'
# 문자열 바꾸기(replace)
>>> a = "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'

split() 함수는 공백(스페이스,탭,엔터 등)을 기준으로 문자열을 나누어 준다.
b.split(':')처럼 괄호 안에 특정한 값을 넣어 주면 괄호안의 값을 구분자로 해서 문자열을 나누어 준다.
이렇게 나눈 값은 리스트에 하나씩 들어가게 된다.

# 문자열 나누기(split)
>>> a = "Life is too short"
>>> a.split()
['Life', 'is', 'too', 'short']
>>>
>>>
>>> b = "a:b:c:d"
>>> b. split(':')
['a', 'b', 'c', 'd']

0개의 댓글