파이썬 튜토리얼-데이터 타입-문자열
이 섹션에서는 Python String 데이터 형식을 다룰 것입니다.
문자열은 컴퓨터의 이진 데이터로 표시되는 일련의 문자입니다. 그리고 파이썬에서 문자열은 ‘유니 코드’문자들의 집합입니다.
파이썬으로 문자열 만들기
작은 따옴표 나 큰 따옴표를 사용하여 문자열을 만들 수 있습니다. 큰 따옴표를 사용하여 여러 줄 문자열을 만들 수도 있습니다.
x = "String of characters"
x = """Multiline
string"""
문자열의 액세스 요소
슬라이싱 연산자[]
는 문자열의 문자에 액세스하는 데 사용됩니다. 인덱스는 다른 Python 데이터 형식으로 0부터 시작합니다.
>>> x = 'Python Programming'
>>> print('x[0] =', x[0])
'P'
>>> print('x[4:15] =', x[4:15])
'on Programm'
>>> x[4] = 'l'
TypeError: 'str' object does not support item assignment
TypeError
가 발생합니다.네거티브 인덱싱
음수 색인을 사용하여 문자열의 문자에 액세스 할 수 있습니다. 예를 들어, 인덱스-1
은 마지막 문자를 나타냅니다. 마찬가지로 인덱스-2
는 두 번째 마지막 문자를 나타냅니다.
>>> s = "Python"
>>> print(s[-1])
'n'
>>> print(s[-2])
'o'
>>> print(s[-3])
'h'
문자열에서 문자 삭제
문자열은 변경할 수 없으므로 문자열의 문자는 삭제할 수 없습니다. 그러나 같은 이름으로 새 문자열을 할당 할 수 있습니다. 이것은 아래 코드에서 설명됩니다.
>>> s = 'Python'
>>> s = 'Program'
>>> s
'Program'
del
키워드를 사용하여 전체 문자열을 삭제할 수 있습니다 :
>>> del s
파이썬 문자열 연산
문자열에서 수행 할 수있는 많은 작업이 있습니다. 그들 중 일부는 다음과 같습니다.
두 개 이상의 문자열 연결
+
연산자를 사용하여 둘 이상의 문자열을 연결할 수 있습니다.
>>> s1 = 'Python '
>>> s2 = 'Programming'
>>> print(s1 + s2)
'Python Programming'
두 개의 문자열을 함께 쓰면+
연산자와 같이 문자열이 연결됩니다.
>>> print('Python ' 'Programming')
'Python Programming'
문자열이 여러 줄에있을 때 괄호를 사용하여 두 문자열을 연결할 수도 있습니다.
>>> s = ('Python '
'Programming')
>>> s
'Pyhton Programming'
문자열을 반복
for
루프를 사용하여리스트를 반복 할 수 있습니다 :
s = "Python"
for i in s:
print(i)
P
y
t
h
o
n
문자열 회원 확인
in
키워드는 문자열에 하위 문자열이 있는지 확인하는 데 사용됩니다.
>>> s = 'Python'
>>> print('a' in s)
False
>>> print('o' in s)
True
문자열에 적용 할 수있는 내장 함수
다른 유형의 시퀀스에 적용되는 함수는 문자열에도 적용 할 수 있습니다. 일반적으로 사용되는 함수는 문자열에서 문자 수를 찾기위한 len()
과 문자열에서 요소의 값과 값을 포함하는 객체를 쌍으로 반환하는 enumerate()입니다.
파이썬 문자열 형식
탈출 순서
이스케이프 시퀀스는 출력 스트림에 특수 기호 (Python 에서 특별한 의미가 있음)를 인쇄하려는 경우에 사용됩니다. 예를 들어 인쇄하려는 경우 :
James asked, "Do you know Andrew's place?"
텍스트에 따옴표가 모두 포함되어 있으므로 작은 따옴표 나 큰 따옴표를 사용할 수 없습니다. 이 문자열을 작은 따옴표 나 큰 따옴표 안에 넣으려고하면 SyntaxError
가 나타납니다.
>>> print("James asked, "Do you know Andrew's place?"")
SyntaxError: invalid syntax
>>> print('James asked, "Do you know Andrew's place?"')
SyntaxError: invalid syntax
이 문제에 대한 해결책은 큰 따옴표 또는 이스케이프 시퀀스를 사용하는 것입니다.
파이썬에서 이스케이프 시퀀스는 백 슬래시에서 시작합니다. 백 슬래시는 통역사의 지시입니다.
print 문에 작은 따옴표를 사용하는 경우 텍스트의 모든 작은 따옴표를 이스케이프해야합니다. 같은 방식으로 문자열을 나타 내기 위해 큰 따옴표를 사용하는 경우 텍스트에서 큰 따옴표를 이스케이프해야합니다.
# using triple quotation marks
print('''James asked, "Do you know Andrew's place?"''')
# escaping single quotes
print('James asked, "Do you know Andrew\'s place?"')
# escaping double quotes
print('James asked, "Do you know Andrew\'s place?"')
Python 의 이스케이프 시퀀스가 설명 된 다음 표를 고려하십시오.
탈출 순서 | 기술 |
---|---|
\\ |
백 슬래시를 이탈 |
\ ' |
작은 따옴표를 이스케이프 |
\ " |
큰 따옴표를 이스케이프 처리 |
\ a |
ASCII 경고 또는 벨 |
\ b |
백 스페이스를 생성합니다 |
\ f |
용지 공급 생성 |
\n |
새로운 줄을 생성합니다. |
\r |
캐리지 리턴 |
\t |
가로 탭을 생성합니다 |
\ v |
세로 탭을 생성합니다 |
\ ooo |
8 진 문자 ooo |
\ xHH |
16 진 문자 HH |
>>> print("C:\\User\\Python36-32\\Lib")
C:\User\Python36-32\Lib
>>> print("First Line\nSecond Line")
First Line
Second Line
이스케이프 시퀀스를 무시하는 원시 문자열 r
문자열 앞에 r
또는 R
로 표시되는 원시 문자열을 만들어서 문자열에서 이스케이프 시퀀스를 무시할 수 있습니다.
원시 문자열에서 이스케이프 시퀀스는 무시됩니다. 다음 예를 참조하십시오.
#without r
>>> print("C:\\User\\Python36-32\\Lib")
C:\User\Python36-32\Lib
#with r
>>> print(r"C:\\User\\Python36-32\\Lib")
C:\\User\\Python36-32\\Lib
여기서 이스케이프 시퀀스가 무시된다는 것을 알 수 있습니다.
문자열 format()
메소드
format()
메소드는 문자열을 포맷하는 강력한 도구입니다. 서식이 지정된 문자열에는 format()
메서드로 대체 된 자리 표시 자{}
가 있습니다.
위치 및 키워드 인수는 교체 순서를 지정하는 데 사용됩니다.
#default placeholder
>>> s1 = "{}, {} and {}".format('Bread', 'Butter', 'Chocolate')
>>> print(s1)
'Bread, Butter and Chocolate'
#positional arguments
>>> s2 = "{1}, {2} and {0}".format('Bread', 'Butter', 'Chocolate')
>>> print(s2)
'Butter, Chocolate and Bread'
#keyword arguments
>>> s3 = "{a}, {x} and {c}".format(x = 'Bread', c = 'Butter', a = 'Chocolate')
>>> print(s3)
'Chocolate, Bread and Butter'
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook