Python의 문자열에서 부분 문자열 추출
문자열은 일련의 문자입니다. 우리는 소프트웨어 개발을하든 경쟁 프로그래밍을하든 상관없이 항상 문자열을 다룹니다. 때때로 프로그램을 작성하는 동안 문자열의 하위 부분에 액세스해야합니다. 이러한 하위 부분은 일반적으로 하위 문자열로 알려져 있습니다. 부분 문자열은 문자열의 부분 집합입니다.
Python에서는 문자열 슬라이싱이나 정규식 또는 정규식을 사용하여이 작업을 쉽게 수행 할 수 있습니다.
Python에서 문자열 슬라이싱을 사용하여 부분 문자열 추출
Python에서 문자열 슬라이싱을 수행하는 몇 가지 방법이 있습니다. 인덱싱은 가장 기본적이고 가장 일반적으로 사용되는 방법입니다. 다음 코드를 참조하십시오.
myString = "Mississippi"
print(myString[:]) # Line 1
print(myString[4:]) # Line 2
print(myString[:8]) # Line 3
print(myString[2:7]) # Line 4
print(myString[4:-1]) # Line 5
print(myString[-6:-1]) # Line 6
출력:
Mississippi
issippi
Mississi
ssiss
issipp
ssipp
위의 코드에서 문자열을 저장하는 변수 끝에[]
대괄호를 추가합니다. 인덱싱에이 표기법을 사용합니다. 이 대괄호 안에 인덱스를 나타내는 정수 값을 추가합니다.
이것은 대괄호[start : stop : step]
(콜론 (:
)으로 구분)의 형식입니다.
기본적으로start
의 값은0
또는 첫 번째 색인이고stop
의 값은 마지막 색인이고step
의 값은1
입니다. start
는 하위 문자열의 시작 색인을 나타내고stop
은 하위 문자열의 끝 색인을 나타내며step
은 각 색인 이후에 증가하는 데 사용할 값을 나타냅니다.
반환 된 하위 문자열은 실제로 색인화가 Python에서0
에서 시작하기 때문에start
색인과stop - 1
색인 사이에 있습니다. 따라서Mississippi
에서Miss
를 검색하려면[0 : 4]
를 사용해야합니다.
대괄호는 비워 둘 수 없습니다. 기본값을 사용하려면 참조하는 매개 변수를 나타 내기 위해 필요한 양의 콜론:
을 공백과 함께 추가해야합니다. 더 나은 이해를 위해 다음 목록을 참조하십시오.
[:]
- > 전체 문자열을 반환합니다.[4 : ]
- > 색인4
부터 마지막 색인까지 하위 문자열을 반환합니다.[ : 8]
- > 색인0
부터 색인7
까지 하위 문자열을 반환합니다.[2 : 7]
- > 색인2
부터 색인6
까지 하위 문자열을 반환합니다.[4 : -1]
- > 색인4
부터 두 번째 마지막 색인까지 하위 문자열을 반환합니다.-1
을 사용하여 Python에서 마지막 색인을 정의 할 수 있습니다.[-6 : -1]
- > 끝에서 여섯 번째 색인부터 두 번째 마지막 색인까지의 하위 문자열을 반환합니다.
Python에서slice()
생성자를 사용하여 부분 문자열 추출
대괄호 안의 인덱스를 언급하는 대신slice()
생성자를 사용하여slice
객체를 생성하여 문자열 또는 목록 또는 튜플과 같은 다른 시퀀스를 분할 할 수 있습니다.
slice(start, stop, step)
생성자는start
,stop
및step
의 세 가지 매개 변수를 승인합니다. 위에서 설명한 것과 정확히 동일합니다.
슬라이스
의 작동 방식은 괄호 표기법과 비교하여 약간 다릅니다. 슬라이스 객체는myString[<'slice' object>]
와 같이 문자열 변수 괄호 안에 배치됩니다.
x
와 같은 단일 정수 값이slice()
생성자에 제공되고 인덱스 슬라이싱에 추가로 사용되는 경우 인덱스0
에서 시작하여 인덱스x - 1
까지 하위 문자열이 검색됩니다. 다음 코드를 참조하십시오.
myString = "Mississippi"
slice1 = slice(3)
slice2 = slice(4)
slice3 = slice(0, 8)
slice4 = slice(2, 7)
slice5 = slice(4, -1)
slice6 = slice(-6, -1)
print(myString[slice1])
print(myString[slice2])
print(myString[slice3])
print(myString[slice4])
print(myString[slice5])
print(myString[slice6])
출력:
Mis
Miss
Mississi
ssiss
issipp
ssipp
수신 된 출력은 자명합니다. 색인은 대괄호 표기법에 정의 된 것과 동일한 규칙을 따릅니다.
Python에서 정규식을 사용하여 부분 문자열 추출
정규 표현식의 경우 Python의 내장 패키지re
를 사용합니다.
import re
string = "123AAAMississippiZZZ123"
try:
found = re.search("AAA(.+?)ZZZ", string).group(1)
print(found)
except AttributeError:
pass
출력:
Mississippi
위 코드에서search()
함수는 전달 된 문자열에서 인수로 제공된 패턴의 첫 번째 위치를 검색합니다. Match
개체를 반환합니다. Match
개체에는 하위 문자열의span
또는 하위 문자열의 시작 및 끝 색인과 같은 출력을 정의하는 많은 속성이 있습니다.
print(dir(re.search('AAA(.+?)ZZZ', string)))
는Match
객체의 모든 속성을 출력합니다. dir()
이 사용될 때__dir__()
메소드가 호출되고이 메소드는 모든 속성 목록을 반환하기 때문에 일부 속성이 누락 될 수 있습니다. 이 메서드는 편집 가능하거나 재정의 할 수 있습니다.