Strings - Learn Python 3 - Snakify

Lesson 5
문자열


1. 문자열

문자열은 input() 함수를 사용하여 표준 입력에서 읽거나 작은 따옴표 나 큰 따옴표로 정의 할 수 있습니다. 두 개의 문자열을 연결할 수 있으며 정수로 n 배 곱하는 문자열을 반복 할 수도 있습니다.

print('>_< ' * 5)  # &gt; _ &lt;&gt; _ &lt;&gt; _ &lt;&gt; _ &lt;&gt; _ &lt;

파이썬의 문자열은 일련의 문자입니다. 함수 len(some_string) 은 문자열에 몇 개의 문자가 있는지를 반환합니다.

print(len('abcdefghijklmnopqrstuvwxyz'))  # 26 세

파이썬의 모든 객체는 str(some_object) 함수를 사용하여 string으로 변환 될 수 있습니다. 따라서 숫자를 문자열로 변환 할 수 있습니다.

s = str(2 ** 100)
print(s)  # 1267650600228229401496703205376
print(len(s))  # 31
Advertising by Google, may be based on your interests

2. 슬라이스 : 단일 문자

슬라이스는 주어진 문자열에서 문자 또는 일부 조각 (substring 또는 subsequence)을 제공합니다.

조각에는 세 가지 형태가 있습니다. 슬라이스의 가장 간단한 형태 : 단일 문자 슬라이스 S[i] 는 문자열의 i 번째 문자를 제공합니다. 즉, S = 'Hello' , S[0] == 'H' , S[1] == 'e' , S[2] == 'l' , S[3] == 'l' , S[4] == 'o' . 파이썬에는 문자열의 문자에 대해 별도의 유형이 없다는 점에 유의하십시오. S[i] 또한 소스 문자열과 마찬가지로 str 유형 str 집니다.

번호 i 있는 S[i] 인덱스라고한다.

음수 인덱스를 지정하면 숫자 -1 시작하여 끝에서부터 계산됩니다. 즉, S[-1] == 'o' , S[-2] == 'l' , S[-3] == 'l' , S[-4] == 'e' , S[-5] == 'H' .

테이블에 요약 해 보겠습니다.

문자열 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 .

Advertising by Google, may be based on your interests

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 자체와 일치합니다.

Advertising by Google, may be based on your interests

4. 슬라이스 : 문자열의 불변성

문자열의 조각은 새 문자열을 만들고 원래 문자열을 수정하지 않습니다. 파이썬에서는 문자열이 변경되지 않습니다. 즉, 객체로 변경할 수 없습니다. 변수는 새 문자열에만 할당 할 수 있지만 이전 문자열은 메모리에 남아 있습니다.

사실 파이썬에는 변수가 없습니다. 개체와 관련된 이름 만 있습니다. 먼저 이름을 한 객체와 연결 한 다음 다른 객체와 연결할 수 있습니다. 여러 이름을 하나의 동일한 객체와 연결할 수 있습니까?

다음과 같이 설명해 보겠습니다.

s = 'Hello'
t = s  # s와 t는 같은 문자열을 가리킨다.
t = s[2:4]  # 이제 새 문자열 &#39;ll&#39;을 가리 킵니다.
print(s)  # s가 변경되지 않으므로 &#39;Hello&#39;를 출력합니다.
print(t)  # 지문을 출력합니다.
Advertising by Google, may be based on your interests

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])
슬라이스의 세 번째 매개 변수가 function range() 의 세 번째 매개 변수와 비슷한 점에 유의하십시오.
s = 'abcdefghijklm'
print(s[0:10:2])
for i in range(0, 10, 2):
    print(i, s[i])
Advertising by Google, may be based on your interests

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
Advertising by Google, may be based on your interests

7. 문자열 메소드 : replace ()

replace() 메서드는 주어진 부분 문자열의 모든 항목을 다른 부분 문자열로 바꿉니다. 구문 : s.replace(old, new) 문자열의 소요 S 하고 하위 문자열의 모든 항목 대체 old 문자열과 new . 예:

print('a bar is a bar, essentially'.replace('bar', 'pub'))
# &#39;술집은 본질적으로 술집이다&#39;

세 번째 인수 count s.replace(old, new, count) 전달할 수 있습니다. replace() 는 첫 번째 count 만 바꾸고 중지합니다.

print('a bar is a bar, essentially'.replace('bar', 'pub', 1))
# &#39;술집은 술집이다, 본질적으로&#39;
Advertising by Google, may be based on your interests

8. 문자열 메소드 : count ()

이 메서드는 다른 문자열 내에서 한 문자열의 발생 횟수를 계산합니다. 가장 간단한 형식은 s.count(substring) 입니다. 중복되지 않는 항목 만 고려됩니다.

print('Abracadabra'.count('a'))
# 4
print(('aaaaaaaaaa').count('aa'))
# 5

세 개의 매개 변수 s.count(substring, left, right) 를 지정하면 개수는 슬라이스 s[left:right] 내에서 수행됩니다.

Advertising by Google, may be based on your interests