산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

파이썬 문자열 마스터하기: 생성, 접근, 조작 총정리

이전 페이지 다음 페이지  

문자열은 파이썬에서 가장 인기 있는 타입 중 하나입니다. 문자를 따옴표로 감싸는 것만으로 쉽게 생성할 수 있습니다. 파이썬은 단일 따옴표와 이중 따옴표를 동일하게 취급합니다. 문자열 생성은 변수에 값을 할당하는 것만큼 간단합니다. 예를 들어:

var1 = 'Hello World!'
var2 = "Python Programming"

문자열 값 접근

파이썬은 문자 타입을 지원하지 않으며, 이들은 길이 1의 문자열로 취급되어 부분 문자열로도 간주됩니다.

부분 문자열에 접근하려면 인덱스나 인덱스들과 함께 대괄호를 사용하여 슬라이싱하세요. 예를 들어:

Live Demo
#!/usr/bin/python
var1 = 'Hello World!'
var2 = "Python Programming"
print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

위 코드를 실행하면 다음 결과가 생성됩니다.

var1[0]: H
var2[1:5]: ytho

문자열 업데이트

변수를 다른 문자열에 (재)할당하여 기존 문자열을 "업데이트"할 수 있습니다. 새 값은 이전 값과 관련이 있거나 완전히 다른 문자열일 수 있습니다. 예를 들어:

Live Demo
#!/usr/bin/python
var1 = 'Hello World!'
print "Updated String :- ", var1[:6] + 'Python'

위 코드를 실행하면 다음 결과가 생성됩니다.

Updated String :- Hello Python

이스케이프 문자

다음 표는 백슬래시 표기법으로 표현할 수 있는 이스케이프 또는 비출력 문자 목록입니다.

이스케이프 문자는 단일 따옴표와 이중 따옴표 문자열 모두에서 해석됩니다.

백슬래시 표기16진수 문자설명
\a0x07벨 또는 경고
\b0x08백스페이스
\cx Control-x
\C-x Control-x
\e0x1b이스케이프
\f0x0c폼피드
\M-\C-x Meta-Control-x
\n0x0a개행(Newline)
\nnn 8진수 표기, n은 0~7 범위
\r0x0d캐리지 리턴
\s0x20공백
\t0x09탭
\v0x0b수직 탭
\x 문자 x
\xnn 16진수 표기, n은 0~9, a~f, A~F 범위

문자열 특수 연산자

문자열 변수 a가 'Hello'를, 변수 b가 'Python'을 가진다고 가정하면:

연산자설명예제
+연결 - 연산자 양쪽의 값 추가a + b = HelloPython
*반복 - 같은 문자열의 여러 사본을 연결하여 새 문자열 생성a*2 = HelloHello
[]슬라이스 - 주어진 인덱스의 문자 반환a[1] = e
[ : ]범위 슬라이스 - 주어진 범위의 문자들 반환a[1:4] = ell
in멤버십 - 주어진 문자열에 문자가 존재하면 참 반환H in a = 1
not in멤버십 - 주어진 문자열에 문자가 없으면 참 반환M not in a = 1
r/R원시 문자열 - 이스케이프 문자의 실제 의미 억제. 구문은 일반 문자열과 동일하나 raw 문자열 연산자인 문자 'r'이 따옴표 바로 앞에 위치. 'r'은 소문자(r) 또는 대문자(R) 가능.print r'\n'은 \n 출력, print R'\n'도 \n 출력
%포맷팅 - 문자열 포맷팅 수행다음 섹션 참조

문자열 포맷팅 연산자

파이썬의 가장 멋진 기능 중 하나는 문자열 포맷 연산자 %입니다. 이 연산자는 문자열에만 고유하며 C의 printf() 함수군을 대체합니다. 간단한 예제는 다음과 같습니다.

Live Demo
#!/usr/bin/python
print "My name is %s and weight is %d kg!" % ('Zara', 21)

위 코드를 실행하면 다음 결과가 생성됩니다.

My name is Zara and weight is 21 kg!

%와 함께 사용할 수 있는 전체 기호 세트는 다음과 같습니다.

포맷 기호변환
%c문자
%s포맷팅 전 str()을 통한 문자열 변환
%i부호 있는 10진 정수
%d부호 있는 10진 정수
%u부호 없는 10진 정수
%o8진 정수
%x16진 정수(소문자)
%X16진 정수(대문자)
%e지수 표기법(소문자 'e')
%E지수 표기법(대문자 'E')
%f부동소수점 실수
%g%f와 %e 중 더 짧은 것
%G%f와 %E 중 더 짧은 것

기타 지원 심볼과 기능은 다음 표에 나열되어 있습니다.

심볼기능
*인수가 너비 또는 정밀도 지정
-왼쪽 정렬
+부호 표시
<sp>양수 앞에 공백 하나 남김
#8진수 앞에 0 추가 또는 'x'/'X' 사용 시 16진수 앞에 '0x'/'0X' 추가
0공백 대신 왼쪽에서 0으로 채움
%'%%'는 리터럴 '%' 하나 남김
(var)매핑 변수(딕셔너리 인수)
m.n.m은 최소 전체 너비, n은 소수점 이하 표시 자릿수(해당 시)

삼중 따옴표

파이썬의 삼중 따옴표는 문자열이 여러 줄에 걸쳐 확장되도록 허용하며, 실제 개행(NEWLINE), 탭(TAB), 기타 특수 문자를 포함할 수 있습니다.

삼중 따옴표 구문은 연속된 세 개의 단일 또는 이중 따옴표로 구성됩니다.

Live Demo
#!/usr/bin/python
para_str = """this is a long string that is made up of several lines and non-printable characters such as TAB ( \t ) and they will show up that way when displayed. NEWLINEs within the string, whether explicitly given like this within the brackets [ \n ], or just a NEWLINE within the variable assignment will also show up. """
print para_str

위 코드를 실행하면 다음 결과가 생성됩니다. 문자열의 마지막 "up."과 닫는 삼중 따옴표 사이의 마지막 개행까지 모든 특수 문자가 출력 형태로 변환된 것을 확인하세요. 또한 개행은 줄 끝의 명시적 캐리지 리턴이나 이스케이프 코드(\n)로 발생합니다.

this is a long string that is made up of several lines and non-printable characters such as TAB ( ) and they will show up that way when displayed. NEWLINEs within the string, whether explicitly given like this within the brackets [ ], or just a NEWLINE within the variable assignment will also show up.

원시 문자열은 백슬래시를 전혀 특수 문자로 취급하지 않습니다. 원시 문자열에 넣는 모든 문자는 작성한 그대로 유지됩니다.

Live Demo
#!/usr/bin/python
print 'C:\\nowhere'

위 코드를 실행하면 다음 결과가 생성됩니다.

C:\nowhere

이제 원시 문자열을 사용해 보겠습니다. 표현식을 r'expression'으로 넣습니다.

Live Demo
#!/usr/bin/python
print r'C:\\nowhere'

위 코드를 실행하면 다음 결과가 생성됩니다.

C:\\nowhere

유니코드 문자열

파이썬의 일반 문자열은 내부적으로 8비트 ASCII로 저장되는 반면, 유니코드 문자열은 16비트 유니코드로 저장됩니다. 이는 전 세계 대부분의 언어에서 특수 문자를 포함한 더 다양한 문자 집합을 허용합니다. 유니코드 문자열은 다음으로 제한하겠습니다.

Live Demo
#!/usr/bin/python
print u'Hello, world!'

위 코드를 실행하면 다음 결과가 생성됩니다.

Hello, world!

보시다시피 유니코드 문자열은 원시 문자열이 접두사 r을 사용하는 것처럼 접두사 u를 사용합니다.

내장 문자열 메서드

파이썬에는 문자열을 조작하기 위한 다음 내장 메서드가 포함되어 있습니다.

번호메서드 및 설명
1capitalize()

문자열의 첫 글자 대문자화

2center(width, fillchar)

원본 문자열을 중앙에 두고 총 width 열로 공백 채운 문자열 반환.

3count(str, beg=0, end=len(string))

시작 인덱스 beg와 끝 인덱스 end가 주어지면 문자열 또는 부분 문자열에서 str 발생 횟수 계산.

4decode(encoding='UTF-8', errors='strict')

encoding에 등록된 코덱으로 문자열 디코딩. encoding은 기본 문자열 인코딩 기본값.

5encode(encoding='UTF-8', errors='strict')

문자열의 인코딩된 버전 반환; 오류 시 기본적으로 ValueError 발생, errors에 'ignore' 또는 'replace' 주어지면 예외 대신 처리.

6endswith(suffix, beg=0, end=len(string))

문자열 또는 부분 문자열(시작 인덱스 beg, 끝 인덱스 end 주어지면)이 suffix로 끝나면 참, 아니면 거짓 반환.

7expandtabs(tabsize=8)

문자열의 탭을 여러 공백으로 확장; tabsize 미제공 시 탭당 8공백 기본값.

8find(str, beg=0, end=len(string))

문자열 또는 부분 문자열에서 str 발생 여부 확인, 찾으면 인덱스 반환, 못 찾으면 -1.

9index(str, beg=0, end=len(string))

find()와 동일하지만 str을 못 찾으면 예외 발생.

10isalnum()

문자열이 최소 1문자 이상이고 모든 문자가 영숫자면 참, 아니면 거짓.

11isalpha()

문자열이 최소 1문자 이상이고 모든 문자가 알파벳이면 참, 아니면 거짓.

12isdigit()

문자열이 숫자만 포함하면 참, 아니면 거짓.

13islower()

문자열이 최소 1개 이상의 대소문자 구별 문자를 가지고 있고 모든 대소문자 구별 문자가 소문자면 참, 아니면 거짓.

14isnumeric()

유니코드 문자열이 숫자 문자만 포함하면 참, 아니면 거짓.

15isspace()

문자열이 공백 문자만 포함하면 참, 아니면 거짓.

16istitle()

문자열이 적절히 "타이틀케이스"면 참, 아니면 거짓.

17isupper()

문자열이 최소 1개 이상의 대소문자 구별 문자를 가지고 있고 모든 대소문자 구별 문자가 대문자면 참, 아니면 거짓.

18join(seq)

시퀀스 seq의 요소 문자열 표현을 구분자 문자열로 병합(연결).

19len(string)

문자열 길이 반환.

20ljust(width[, fillchar])

원본 문자열을 왼쪽 정렬하여 총 width 열로 공백 채운 문자열 반환.

21lower()

문자열의 모든 대문자를 소문자로 변환.

22lstrip()

문자열의 앞쪽 공백 모두 제거.

23maketrans()

translate 함수에서 사용할 변환 테이블 반환.

24max(str)

문자열 str에서 최대 알파벳 문자 반환.

25min(str)

문자열 str에서 최소 알파벳 문자 반환.

26replace(old, new[, max])

문자열에서 old의 모든 발생을 new로 대체, max 주어지면 최대 max회만 대체.

27rfind(str, beg=0, end=len(string))

find()와 동일하지만 문자열에서 역방향 검색.

28rindex(str, beg=0, end=len(string))

index()와 동일하지만 문자열에서 역방향 검색.

29rjust(width[, fillchar])

원본 문자열을 오른쪽 정렬하여 총 width 열로 공백 채운 문자열 반환.

30rstrip()

문자열의 뒤쪽 공백 모두 제거.

31split(str="", num=string.count(str))

구분자 str(미제공 시 공백)로 문자열 분할, 부분 문자열 리스트 반환; num 주어지면 최대 num개 부분 문자열로 분할.

32splitlines(num=string.count('\n'))

모든(또는 num) 개행에서 문자열 분할, 개행 제거된 각 줄 리스트 반환.

33startswith(str, beg=0, end=len(string))

문자열 또는 부분 문자열이 부분 문자열 str로 시작하면 참, 아니면 거짓 반환.

34strip([chars])

문자열에 lstrip()과 rstrip() 모두 수행.

35swapcase()

문자열의 모든 글자 대소문자 반전.

36title()

문자열의 "타이틀케이스" 버전 반환, 즉 모든 단어가 대문자로 시작하고 나머지는 소문자.

37translate(table, deletechars="")

변환 테이블 str(256자)에 따라 문자열 변환, del 문자열의 문자들 제거.

38upper()

문자열의 소문자를 대문자로 변환.

39zfill(width)

원본 문자열을 왼쪽에 0으로 채워 총 width 문자 길이로 만듦; 숫자용, zfill()은 부호 유지(0 하나 적게).

40isdecimal()

유니코드 문자열이 10진수 문자만 포함하면 참, 아니면 거짓.

python

  1. C# 문자열(String) 마스터: 기초, 연산, 고급 기법 총정리
  2. 파이썬 연산자 마스터하기: 종합 가이드
  3. Python 딕셔너리 마스터하기: 생성, 조작, 고급 기법
  4. Python 문자열 연산 마스터하기: replace, join, split, reverse, 대소문자 변환
  5. Python strip() 메서드 완전 정복: 종합 가이드와 실전 예제
  6. Python str.count() 마스터하기: 문자 및 부분문자열 개수 세기 예제
  7. Python format() 문자열 마스터하기: 명확한 예제로 완전 정복
  8. Python len() 함수: 객체 길이 측정 실전 가이드
  9. Python String.find() 메서드 마스터하기: 문법, 예제, 대안 비교
  10. 파이썬 enumerate() 마스터하기: 리스트, 튜플, 문자열, 딕셔너리 인덱스와 함께 루프