한국어
파이썬
 

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

pjk 2014.08.29 09:54 조회 수 : 7895

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 Sequence Meaning
newline Ignored
  Backslash ()
' Single quote (')
" Double quote (")
a ASCII Bell (BEL)
b ASCII Backspace (BS)
f ASCII Formfeed (FF)
n ASCII Linefeed (LF)
N{name} Character named name in the Unicode database (Unicode only)
r ASCII Carriage Return (CR)
t ASCII Horizontal Tab (TAB)
uxxxx Character with 16-bit hex value xxxx (Unicode only)
Uxxxxxxxx Character with 32-bit hex value xxxxxxxx (Unicode only)
v ASCII Vertical Tab (VT)
ooo Character with octal value ooo
xhh Character 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
번호 제목 글쓴이 날짜 조회 수
24 pybind11 에 대해서 makersweb 2023.07.23 4390
23 Qt For Python(PySide2) QML 프로젝트 예제 file makersweb 2019.10.17 6014
22 명령어 한줄로 내컴퓨터를 웹서버로 file 운영자 2019.01.25 4751
21 pydbus 바인딩을 이용하여 서비스 데몬과 D-Bus통신 file makersweb 2018.03.12 3298
20 Boost Python을 이용하여 python을 위한 C++ API 바인딩 [5] file makersweb 2017.01.08 10496
19 [Python]EXE또는 DLL파일의 버전정보를 알아내기위한 몇가지 방법 makersweb 2015.06.25 9953
18 QML 및 Window 투명처리 file makersweb 2015.04.22 5219
17 [pyqt4]QTimer 예제 - 버튼을 누르면 3초후 함수 또는 메소드 호출 makersweb 2015.04.01 10872
16 Python + QML with PyQt4 makersweb 2015.03.24 9013
15 print를 로그파일로 생성하기 (log출력 Redirection) makersweb 2015.03.18 6736
14 외부 프로그램 실행 pjk 2015.02.10 16464
13 우분투에 Python새 버전 설치 사용법 pjk 2015.02.10 4292
12 How to Use Freeze pjk 2014.09.06 5866
11 [PyQt4]개발 프로그램 버전표시 메세지 박스 pjk 2014.09.02 8613
10 [PyQt4]여러가지 버튼 예제 file pjk 2014.08.29 15196
» Python 문자열 관련 함수 레퍼런스 pjk 2014.08.29 7895
8 [PyQt4]스레드 및 ProgressBar 예제 코드 file pjk 2014.08.26 8956
7 [PyQt4]multiprocess 예제 코드 pjk 2014.08.26 8747
6 [PyQt4]마우스 클릭 이벤트 예제 코드 pjk 2014.08.26 7435
5 [PyQt4]폴더 또는 파일을 드레그하여 그 경로를 LineEdit로 가져오기 file pjk 2014.08.22 14334