Lesson 5
문자열
1. 문자열
문자열은 input() 함수를 사용하여 표준 입력에서 읽거나 작은 따옴표 나 큰 따옴표로 정의 할 수 있습니다. 두 개의 문자열을 연결할 수 있으며 정수로 n 배 곱하는 문자열을 반복 할 수도 있습니다.
print('>_< ' * 5) # > _ <> _ <> _ <> _ <> _ <
파이썬의 문자열은 일련의 문자입니다. 함수 len(some_string) 은 문자열에 몇 개의 문자가 있는지를 반환합니다.
print(len('abcdefghijklmnopqrstuvwxyz')) # 26 세
파이썬의 모든 객체는 str(some_object) 함수를 사용하여 string으로 변환 될 수 있습니다. 따라서 숫자를 문자열로 변환 할 수 있습니다.
s = str(2 ** 100) print(s) # 1267650600228229401496703205376 print(len(s)) # 31
2. 슬라이스 : 단일 문자
슬라이스는 주어진 문자열에서 문자 또는 일부 조각 (substring 또는 subsequence)을 제공합니다.
조각에는 세 가지 형태가 있습니다. 슬라이스의 가장 간단한 형태 : 단일 문자 슬라이스 S[i] 는 문자열의 i 번째 문자를 제공합니다. 즉, , , , , , . 파이썬에는 문자열의 문자에 대해 별도의 유형이 없다는 점에 유의하십시오. S[i] 또한 소스 문자열과 마찬가지로 str 유형 str 집니다.
번호 i 있는 S[i] 인덱스라고한다.
음수 인덱스를 지정하면 숫자 -1 시작하여 끝에서부터 계산됩니다. 즉, , , , , .
테이블에 요약 해 보겠습니다.
| 문자열 S | H | 이자형 | 엘 | 엘 | 영형 |
|---|---|---|---|---|---|
| 색인 | S [0] | S [1] | S [2] | S [3] | S [4] |
| 색인 | S [-5] | S [-4] | S [-3] | S [-2] | S [-1] |
슬라이스 S[i] 의 인덱스가 len(S) 보다 크거나 같거나 -len(S) 보다 작 으면 다음 오류가 발생합니다. IndexError: string index out of range .
3. 조각 : 하위 문자열
두 개의 매개 변수가있는 슬라이스 S[a:b] 는 길이가 b - a 인 하위 문자열을 반환 b - a , 인덱스 a 의 문자부터 시작하여 인덱스 b 의 문자까지 지속되며 마지막 문자는 포함하지 않습니다. 예를 들어 S[1:4] == 'ell' 이고 S[-4:-1] 사용하여 동일한 부분 문자열을 얻을 수 있습니다. 예를 들어, S[1:-1] 은 문자열의 첫 번째와 마지막 문자가없는 하위 문자열입니다 (슬라이스는 인덱스 1 인 문자로 시작하고 인덱스로 끝납니다. -1, 그것을 포함하지 않음).
두 개의 매개 변수가있는 슬라이스는 IndexError 발생시키지 않습니다. 예를 들어 S == 'Hello' 경우 S[1:5] 슬라이스는 'ello' 문자열을 반환하고 두 번째 인덱스가 매우 큰 경우에도 S[1:100] 과 같은 결과가 반환됩니다.
두 번째 매개 변수는 생략하지만 콜론은 그대로 유지하면 슬라이스가 문자열 끝으로 이동합니다. 예를 들어, 문자열에서 첫 번째 문자를 제거하려면 (인덱스가 0) 슬라이스 S[1:] 가져옵니다. 마찬가지로 첫 번째 매개 변수를 생략하면 파이썬은 문자열의 시작 부분에서 슬라이스를 가져옵니다. 즉, 문자열에서 마지막 문자를 제거하려면 슬라이스 S[:-1] 사용할 수 있습니다. 슬라이스 S[:] 는 문자열 S 자체와 일치합니다.
4. 슬라이스 : 문자열의 불변성
문자열의 조각은 새 문자열을 만들고 원래 문자열을 수정하지 않습니다. 파이썬에서는 문자열이 변경되지 않습니다. 즉, 객체로 변경할 수 없습니다. 변수는 새 문자열에만 할당 할 수 있지만 이전 문자열은 메모리에 남아 있습니다.
사실 파이썬에는 변수가 없습니다. 개체와 관련된 이름 만 있습니다. 먼저 이름을 한 객체와 연결 한 다음 다른 객체와 연결할 수 있습니다. 여러 이름을 하나의 동일한 객체와 연결할 수 있습니까?
다음과 같이 설명해 보겠습니다.
s = 'Hello' t = s # s와 t는 같은 문자열을 가리킨다. t = s[2:4] # 이제 새 문자열 'll'을 가리 킵니다. print(s) # s가 변경되지 않으므로 'Hello'를 출력합니다. print(t) # 지문을 출력합니다.
5. 조각 : 하위 시퀀스
세 개의 매개 변수 S[a:b:d] 로 슬라이스를 지정하면 세 번째 매개 변수는 함수 range() 와 동일한 단계를 지정합니다. 이 경우 다음 인덱스 문자 만이 촬영된다 a a + d , a + 2 * d 까지의 인덱스를 가지는 문자를 포함하지 않는 등 b . 세 번째 매개 변수가 2이면 슬라이스는 매 두 번째 문자를 가져오고 슬라이스의 단계가 -1 문자가 역순으로됩니다. 예를 들어, S[::-1] 과 같은 문자열을 뒤집을 수 있습니다. 예제를 보자.
s = 'abcdefg' print(s[1]) print(s[-1]) print(s[1:3]) print(s[1:-1]) print(s[:3]) print(s[2:]) print(s[:-1]) print(s[::2]) print(s[1::2]) print(s[::-1])
range() 의 세 번째 매개 변수와 비슷한 점에 유의하십시오.s = 'abcdefghijklm'
print(s[0:10:2])
for i in range(0, 10, 2):
print(i, s[i])
6. 문자열 메소드 : find () 및 rfind ()
메서드는 객체에 바인딩 된 함수입니다. 메서드가 호출되면 메서드가 개체에 적용되고 해당 개체와 관련된 계산이 수행됩니다. 메소드는 object_name.method_name(arguments) 로 호출됩니다. 예를 들어, s.find("e") 에서 문자열 메소드 find() 는 하나의 인수 "e" 문자열 s 적용됩니다.
find() 메서드는 호출 된 문자열에서 인수로 전달 된 하위 문자열을 검색합니다. 이 함수는 하위 문자열이 처음 나타나는 인덱스를 반환합니다. 하위 문자열이 없으면이 메서드는 -1을 반환합니다.
s = 'Hello'
print(s.find('e'))
# 1
print(s.find('ll'))
# 2
print(s.find('L'))
# -1
같이, 메소드 rfind() 는 부분 문자열이 마지막으로 나타나는 색인을 리턴합니다.
s = 'abracadabra'
print(s.find('b'))
# 1
print(s.rfind('b'))
# 8
s.find(substring, left, right) 3 개의 인수로 find() 를 호출하면, 검색은 슬라이스 s[left:right] 내에서 수행됩니다. 당신은 단지 두 개의 인수, 같은 지정하면 s.find(substring, left) , 검색은 슬라이스에서 수행 s[left:] , 즉, 인덱스에있는 문자로 시작하는 left 문자열의 끝. 메소드 s.find(substring, left, right) 는 슬라이스가 아닌 전체 문자열 s 상대적으로 절대 색인을 리턴합니다.
s = 'my name is bond, james bond, okay?'
print(s.find('bond'))
# 11
print(s.find('bond', 12))
# 23
7. 문자열 메소드 : replace ()
replace() 메서드는 주어진 부분 문자열의 모든 항목을 다른 부분 문자열로 바꿉니다. 구문 : s.replace(old, new) 문자열의 소요 S 하고 하위 문자열의 모든 항목 대체 old 문자열과 new . 예:
print('a bar is a bar, essentially'.replace('bar', 'pub'))
# '술집은 본질적으로 술집이다'
세 번째 인수 count s.replace(old, new, count) 전달할 수 있습니다. replace() 는 첫 번째 count 만 바꾸고 중지합니다.
print('a bar is a bar, essentially'.replace('bar', 'pub', 1))
# '술집은 술집이다, 본질적으로'
8. 문자열 메소드 : count ()
이 메서드는 다른 문자열 내에서 한 문자열의 발생 횟수를 계산합니다. 가장 간단한 형식은 s.count(substring) 입니다. 중복되지 않는 항목 만 고려됩니다.
print('Abracadabra'.count('a'))
# 4
print(('aaaaaaaaaa').count('aa'))
# 5
세 개의 매개 변수 를 지정하면 개수는 슬라이스 s[left:right] 내에서 수행됩니다.