본문 바로가기
Python/PY4E

PY4E Chapter 6. Strings

by 전자여우 2022. 8. 5.

문자열(String)

문자열 자료형은 일반적으로 따옴표 안에 들어 있으며, input() 함수를 통해 받은 데이터 또한 문자열 자료형이다.

문자열 자료형은 각각의 문자마다 좌표를 가지고 있으며, 문자열 변수의 마지막에 대괄호를 적는 것으로 사용할 수 있다.

또한 len()함수로 문자열의 길이를 반환받을 수 있다.

# 1. 한 글자 한 글자 출력하기
# while
fruit = 'banana'
index = 0
while index < len(fruit):
	letter = fruit[index]
    print(index, letter)
    index = index = 1
# for
fruit = 'banana'
for letter in fruit:
	print(letter)
    
# 2. 문자열 안에서 특정 글자 개수 세기
fruit = 'banana'
count = 0
for letter in word:
	if letter == 'a': # a의 개수 세기
    	count = count + 1
print(count)

문자열 변수명의 마지막에 대괄호와 콜론(:)을 넣는 것으로 문자열을 슬라이싱 할 수 있다.

s = 'Monty Python'
# M o n t y   P y t h o n
# 0 1 2 3 4 5 6 7 8 9 10 11

# 마지막 인덱스는 포함하지 않는다.
print(s[0:4]) # Mont
print(s[6:7]) # P
print(s[6:20]) # Python

# 첫 번째나 마지막 인덱스를 생략해도 된다.
print(s[:2]) # Mo
print(s[8:]) # thon
print(s[:]) # Monty Python

문자열의 연산

a = 'Hello'
b = a + 'There'
print(b) # HelloThere

c = a + ' ' + 'There'
print(c) # Hello There

fruit = 'banana'
'n' in fruit # True
'm' in fruit # False
'nan' in fruit # True
if 'a' in fruit:
	print('Found it!')

문자열 비교

문자열의 비교는 보통 컴퓨터나 파이썬이 가진 문자집합에 따라 다르지만 일반적으로 사전 순서상 앞인지 뒤인지를 의미한다.

대문자 소문자의 비교는 상황에 따라 결과가 상이할 수 있다.

if word == 'banana':
	print('All right, bananas.')

if word < 'banana':
	print('Your word,' + word + ', comes before banana.')
elif word > 'banana':
	print('Your word,' + word + ', comes after banana.')
else:
	print('All right, bananas.')

문자열 자료유형은 몇 가지의 메소드를 활용해서 원하는 작업을 할 수 있다.

문자를 모두 소문자, 대문자로 만들어주는 .lower(), .upper()

하위 문자열을 문자열에서 탐색한 뒤 첫 번째로 나타나는 결과의 위치를 반환하거나 그것이 없다면 -1을 반환해주는 .find()

문자열 안의 하위 문자열을 모두 찾아 다른 문자열로 대체해주는 .replace()

공백을 스킵하는 .lstrip(), .rstrip(), .strip()

특정 문자열로 시작하는지에 대한 여부를 boolean타입으로 반환하는 .startswith()

# 소문자화, 대문자화
greet = 'Hello Bob'
zap = greet.lower()
print(zap) # hello bob
zap = greet.upper()
print(zap) # HELLO BOB

# 찾기
fruit = 'banana'
pos = fruit.find('na')
print(pos) # 2
aa = fruit.find('z')
print(aa) # -1

# 문자열 바꾸기
nstr = greet.replace('Bob', 'Jane')
print(nstr) # Hello Jane
nstr = greet.replace('o', 'X')
print(nstr) # HellX BXb

# 공백 없애기
greet = '    Hello Bob    '
greet.lstrip() # 'Hello Bob    '
greet.rstrip() # '    Hello Bob'
greet.strip() # 'Hello Bob'

# 특정 문자로 시작하니?
line = 'Please have a nice day'
line.startswith('P') # True
line.startswith('p') # False

조금 더 섬세한 슬라이싱 작업

data = 'From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008'
atpos = data.find('@') # data 안에 있는 @의 위치는?
print(atpos) # 21
sppos = data.find(' ', atpos) # atpos 즉, 21 이후의 공백의 위치는?
print(sppos) # 31
host = data[atpos+1 : sppos] # @의 뒤 부터 공백 직전까지의 문자열
print(host) # uct.ac.za

 

Assignment

Assignment 6.5에서는 .find() 메서드와 문자열 슬라이싱을 사용하여 줄 끝에 있는 숫자를 추출한 뒤, 추출한 값을 float 자료형으로 변환하여 출력하는 프로그램을 작성하는 것이었다.

나의 풀이는 아래와 같다.

# ex_6_5
text = "X-DSPAM-Confidence:    0.8475"
zro = text.find('0')
print(float(text[zro:]))

'Python > PY4E' 카테고리의 다른 글

PY4E Chapter 8. Lists  (0) 2022.08.08
PY4E Chapter 7. Files  (0) 2022.08.07
PY4E Chapter 5. Loops and Iterations  (0) 2022.08.05
PY4E Chapter 4. Functions  (0) 2022.08.02
PY4E Chapter 3. Conditional Execution  (0) 2022.08.02

댓글