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]
내에서 수행됩니다.