한국어
파이썬

Python 문자열 관련 함수 레퍼런스

pjk 2014.08.29 09:54 조회 수 : 5351

1. 시퀀스 자료형 : 문자열, 리스트, 튜플
1) 인덱싱(indexing) : [k]

>>> s = 'abcdef' # 문자열
>>> l = [100, 200, 300] # 리스트
>>> s[0] # 참조
'a'
>>> s[1]
'b'
>>> s[-1]
'f'
>>> l[1]
200
>>> l[1] = 900 # 치환

2) 슬라이싱(Slicing) : [s:t]

>>> s = 'abcdef'
>>> l = [100, 200, 300]
>>> s[1:3] # 1번 위치와 3번 위치 사이를 나타냄

'bc'
>>> s[1:] # 1부터 끝까지
'bcdef'
>>> s[:] # 처음부터 끝까지
'abcdef'
>>> s[-100:100] # 범위를 넘어서면 범위 내의 값으로 자동 처리
'abcdef'
>>> l[:-1] # 맨 오른쪽 값을 제외하고 모두
[100, 200]
>>> s[::2] # 2칸 단위로

'ace'
>>> s[::-1] # 거꾸로
'fedcba'

3) 연결하기(Concatenation) : +

>>> s = 'abc' + 'def'
>>> s
'abcdef'

>>> L = [1, 2, 3] + [4, 5, 6]
>>> L

[1, 2, 3, 4, 5, 6]

4) 반복하기(Repetition) : *

>>> s = 'Abc'
>>> s * 4
'AbcAbcAbcAbc'

>>> L = [1, 2, 3]
>>> L * 2
[1, 2, 3, 1, 2, 3]

5) 멤버십 테스트(Membership Test) : in

>>> t = (1, 2, 3, 4, 5)
>>> 2 in t
True

>>> 10 not in t
True
>>> 'ab' in 'abcd' # 문자열인 경우 부분 문자열 확인 가능

True

6) 길이 정보 : len

>>> l = [1, 2, 3]
>>> len(l)

3

2. 문자열 정의
1) 한 줄 문자열 : ' or "
2) 여러 줄 문자열 : ''' or """
3) 이스케이프 문자

Escape SequenceMeaning
newlineIgnored
Backslash ()
'Single quote (')
"Double quote (")
aASCII Bell (BEL)
bASCII Backspace (BS)
fASCII Formfeed (FF)
nASCII Linefeed (LF)
N{name}Character named name in the Unicode database (Unicode only)
rASCII Carriage Return (CR)
tASCII Horizontal Tab (TAB)
uxxxxCharacter with 16-bit hex value xxxx (Unicode only)
UxxxxxxxxCharacter with 32-bit hex value xxxxxxxx (Unicode only)
vASCII Vertical Tab (VT)
oooCharacter with octal value ooo
xhhCharacter with hex value hh

4) 문자열 연산(시퀀스 자료형의 특징 참조)
>>> str1 = 'Firtst String'
>>> str1[0] = 'f' # 변경 불가능(Immutable) 자료형이므로 에러 발생


Traceback (most recent call last):
File "<pyshell#54>", line 1, in <module>
str1[0] = 'f'
TypeError: 'str' object does not support item assignment

3. 문자열 변경

>>> s = 'spam and egg'
>>> s = s[:5] + 'cheese' + s[5:]
>>> s
'spam cheeseand egg'

4. 문자열 포매팅(Formatting) : %s, %r, %c, %d, %i, %u, %o, %x, %X, %e, %E, %f, %g, %G

>>> format = 'name = %s, age = %s'
>>> format % ('gslee', 24)
'name = gslee, age = 24'

>>> "%s -- %s -- %d -- %f -- %e" % ((1, 2), [3, 4, 5], 5, 5.3, 101.3)
'(1, 2) -- [3, 4, 5] -- 5 -- 5.300000 -- 1.013000e+002'
>>> print '%(이름)s -- %(전화번호)s' % {'이름': '이강성', '전화번호': 5284}
이강성 -- 5284

5. 문자열 메쏘드

>>> # 대ㆍ소문자로 변환 관련 메쏘드
>>> s = 'i like programming.'
>>> s.upper()
'I LIKE PROGRAMMING.'
>>> s.upper().lower()
'i like programming.'
>>> 'I Like Programming'.swapcase()
'i lIKE pROGRAMMING'
>>> s.capitalize()
'I like programming.'
>>> s.title()
'I Like Programming.'
>>> # 검색 관련 메쏘드
>>> s = 'i like programming, i like swimming.'
>>> s.count('like') # 문자열 s에서 'like'라는 부분문자열이 발생한 횟수를 리턴
2
>>> s.find('like') # 'like'의 offset를 리턴(검색)
2
>>> s.find('my') # 찾는 문자열이 없을 경우 -1 리턴
-1
>>> s.rfind('like') # find와 같지만 문자열 s의 뒤쪽부터 탐색
22
>>> s.index('like')
2
>>> s.index('my') # find와 같지만 찾는 문자열이 없을 경우 예외 발생

Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
s.index('my')
ValueError: substring not found

>>> s.rindex('like') # index와 같지만 문자열 s의 뒤쪽부터 탐색
22
>>> s.startswith('i like') # i like로 시작하는 문자열인가?
True
>>> s.endswith('swimming.') # swimming.으로 끝나는 문자열인가?
True
>>> s.startswith('progr', 7) # 7번째 문자열이 progr로 시작하는가?
True
>>> s.endswith('like', 0, 26) # 0부터 26번째 위치 사이의 문자열이 like로 끝나는가?
True
>>> # 편집 및 치환 관련 메쏘드
>>> u = ' spam and ham '
>>> u.strip() # 좌우 공백 제거
'spam and ham'
>>> u.rstrip() # 오른쪽 공백 제거
' spam and ham'
>>> u.lstrip() # 왼쪽 공백 제거
'spam and ham '
>>> ' abd '.strip()
'abd'
>>> '><>abc<><><>'.strip('<>')
'abc'
>>> '><><abc<><><>n'.strip('<>')
'abc<><><>n'
>>> u'u4000u4001abcu4000'.strip(u'u4000')
u'u4001abc'
>>> u.replace('spam', 'spam, egg') # 'spam'을 'spam, egg'로 변경
' spam, egg and ham '
>>> # 문자열 분리와 결합 관련 메쏘드
>>> u = ' spam and ham '
>>> u.split() # 공백으로 분리

['spam', 'and', 'ham']
>>> u.split('and') # 'and로 분리
[' spam ', ' ham ']
>>> t = u.split()
>>> ':'.join(t) # ':' 문자로 결합
'spam:and:ham'
>>> print 'n'.join(t) # 줄 바꾸기로 결합
spam
and
ham

>>> lines = '''first line
second line
third line'''
>>> lines.splitlines() # 라인 단위로 분리
['first line', 'second line', 'third line']
>>> s = 'one:two:three:four'
>>> s.split(':', 2) # 두 번만 분리
['one', 'two', 'three:four']
>>> s.rsplit(':', 1) # 오른쪽부터 처리
['one:two:three', 'four']
>>> # 정렬 관련 메쏘드
>>> u = 'spam and egg'
>>> u.center(60) # 전체 60문자의 가운데에 맞춤
' spam and egg '
>>> u.ljust(60) # 왼쪽에 맞춤
'spam and egg '
>>> u.rjust(60) # 오른쪽에 맞춤
' spam and egg'
>>> u.center(60, '-') # 공백 대신 '-' 문자로 채움
'------------------------spam and egg------------------------'
>>> '1tandt2'.expandtabs() # 탭(t)을 8자 공백으로 사용
'1 and 2'
>>> '1tandt2'.expandtabs(4)
'1 and 2'
>>> # 구성된 문자열의 특성 유무 파악 관련 메쏘드
>>> '1234'.isdigit()
True
>>> 'abcd'.isalpha()
True
>>> '1abc234'.isalnum()
True
>>> 'abc'.islower() # 소문자인가?
True
>>> 'ABC'.isupper()
True
>>> ' trn'.isspace() # 공백문자인가?
True
>>> 'This Is A Title'.istitle() # 제목 문자열인가?
True
>>> # 채우기 및 자리 맞추기 관련 메쏘드

>>> s = '123'
>>> s.zfill(5)
'00123'
>>> 'goofy'.zfill(6) # 빈 자리는 0으로 채워짐
'0goofy'

6.. string 모듈

>>> import string
>>> d = string.letters + string.digits
>>> d
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'

>>> userid = raw_input('your id : ')
your id : creaplz510
>>> for ch in userid:
if ch not in d:
print 'invalid user id'
break

7. 유니 코드

>>> unicode('한글', 'cp949') # 인코딩을 명시적으로 알려주어야 함
u'ud55cuae00'
>>> unicode('한글', 'cp949').encode('utf-8') # 'utf-8' 코드로 변환
'xedx95x9cxeaxb8x80'
>>> len('한글과 세종대왕')
15
>>> len(unicode('한글과 세종대왕', 'mbcs'))
8
>>> u = unicode('한글과 세종대왕', 'mbcs')
>>> print u[0]

>>> print u[1]

>>> ord('A') # 문자 'A'의 ASCII 코드값
65
>>> chr(65) # 코드 65에 해당하는 문자
'A'
>>> ord(unicode('가', 'cp949'))
44032
>>> hex(ord(unicode('가', 'cp949')))
'0xac00'
>>> print unichr(0xac00)

>>> print unichr(0xd7a3)

8. 문서 문자열 : 도움말 사용
# file : docstring.py
'''
Module __doc__ string
line1
line2
'''
class Ham:
"Ham class __doc__ string"
def func(self):
"Ham class func __doc__ string"
pass

>>> import docstring
>>> print docstring.__doc__
Module __doc__ string
line1
line2
>>> print docstring.Ham.__doc__
Ham class __doc__ string
>>> print docstring.Ham.func.__doc__
Ham class func __doc__ string
번호 제목 글쓴이 날짜 조회 수
20 Boost Python을 이용하여 python을 위한 C++ API 바인딩 file makersweb 2017.01.08 3036
19 [Python]EXE또는 DLL파일의 버전정보를 알아내기위한 몇가지 방법 makersweb 2015.06.25 3173
18 [pyqt4]PyQt4 + QML 및 Window 투명처리 file makersweb 2015.04.22 2304
17 [pyqt4]QTimer 예제 - 버튼을 누르면 3초후 함수 또는 메소드 호출 makersweb 2015.04.01 5204
16 [pyqt4]PyQt4 + QML makersweb 2015.03.24 3810
15 [python]print를 로그파일로 생성하기 makersweb 2015.03.18 3482
14 [Python]외부 프로그램 실행 pjk 2015.02.10 4727
13 [Python]우분투에 새 버전 설치 사용법 pjk 2015.02.10 2313
12 How to Use Freeze pjk 2014.09.06 3635
11 [PyQt4]개발 프로그램 버전표시 메세지 박스 pjk 2014.09.02 5525
10 [PyQt4]여러가지 버튼 예제 file pjk 2014.08.29 9661
» Python 문자열 관련 함수 레퍼런스 pjk 2014.08.29 5351
8 [PyQt4]스레드 및 ProgressBar 예제 코드 file pjk 2014.08.26 5250
7 [PyQt4]multiprocess 예제 코드 pjk 2014.08.26 6363
6 [PyQt4]마우스 클릭 이벤트 예제 코드 pjk 2014.08.26 5250
5 [PyQt4]폴더 또는 파일을 드레그하여 그 경로를 LineEdit로 가져오기 file pjk 2014.08.22 5524
4 다른 디렉터리의 파일(모듈) import 하기 pjk 2014.08.22 4423
3 [PyQt4]윈도우창에 별 찍기 예제 file pjk 2014.08.19 6429
2 Python으로 작성된 프로그램을 윈도우응용프로그램(exe)으로 빌드하기 file pjk 2014.08.03 6657
1 파이썬으로 작성된 소스를 py2exe을 이용하여 윈도우 응용프로그램 빌드시 콘솔창 숨기기 pjk 2014.07.29 6729