Post List

2015년 7월 26일 일요일

Python 기초 #05 문자열(String)

1. 문자열 특징

문자열은 char 형을 저장하는 List라고 생각하면 됩니다.
단, 한번 저장된 내용을 변경 할 수는 없습니다.
인덱스 연산자 [ ] 를 이용하여 특정 위치의 문자 1개만 가져올 수가 있습니다만,
이미 한번 저장된 문자열중 일부 또는 전체를 바꾼다거나, 다른 문자열을 붙인다던지 하는 것은 허용되지 않습니다.

str = 'Luna the Star'
letter = str[3] #'a'
print(letter)

문자열 중 그 일부분만을 추출하는 Substring 은 List의 일부분을 반환하는 연산과 같은 방법을 사용합니다.

sub1 = str[:3]  #'Luna'
sub2 = str[2:7] #'na the'
sub3 = str[9:]  #'Star'

2. 문자열 길이 구하기

len 함수를 이용하여 구할 수 있습니다.

n = len(str)
print(n) # 13

이걸 이용하여 문자열에서 한 글자씩 추출하는 운행법(traversal)은 다음과 같이 할 수 있습니다.

i = 0
while i < len(str):
    letter = str[i]
    print(letter)
    i += 1

for를 이용하는 방법은 훨씬 간단합니다.

for c in str:
    print(c)

3. in 연산자

좌항의 문자열이 우항의 문자열에 포함되어 있다면 True 아니면 False의 결과값을 반환합니다.

>>> 'un' in str
True
>>> 'Un' in str
False

4. string method

>>> type(str)
<class 'str'>
>>> dir(str)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
>>> help(str.startswith)
Help on built-in function startswith:

startswith(...) method of builtins.str instance
    S.startswith(prefix[, start[, end]]) -> bool

dir 을 이용하여 사용가능한 method 확인이 가능하며,
help를 이용하여 해당 method의 사용법 확인이 가능합니다.

5. string parsing

find 함수를 이용하여 특정 char 또는 string 의 위치를 찾아내서 인덱스 연산자의 부분집합 [ : ] 을 이용하여 추출하면 됩니다.
find 연산자의 두번째 인자로 찾을 시작위치 설정이 가능합니다.
(다른 언어들의 string find 함수와 같습니다.)

pos1 = str.find(' ')
print(pos1) #4
str1 = str[:pos1 - 1]
print(str1) #'Luna'
pos2 = str.find(' ', pos1 + 1)
print(pos2) #8
str2 = str[pos2+1:]
print(str2) #'Star'

6. 형식 연산자 (format operator)

다른 언어의 format과 많이 다르지 않습니다.
문자열 내에 %d (정수형) , %g(실수형), %s(문자열) 을 섞어서 표현한 다음 % 연산자 뒤에 순서대로 변수를 나열해주면 됩니다. 변수가 1개 이상일 경우 괄호 ( ) 안에 넣으면 됩니다.

fstr = '%s , %d year , %g percent.' % ('Luna', 1977, 85.7)
print(fstr) # 'Luna , 1977 year , 85.7 percent.'

연습문제 05
'X-DSPAM-Confidence: 0.8475'문자열에서 find 를 이용하여 ':'':'의 위치를 찾은 다음 그 다음에 있는 float를 부동 소수형의 변수에 저장하세요.

댓글 없음:

댓글 쓰기