세 번째 문자에서 문자열 끝까지 새 문자열을 가져오기 위해 Python에서 문자열을 부분 문자열로 만드는 방법이 있습니까?
myString[2:end]
와 같을까요?
2편을 떠난다는 것은 '끝까지'라는 뜻이고, 1편을 떠나면 처음부터 시작하는 것인가?
질문자 :Joan Venge
세 번째 문자에서 문자열 끝까지 새 문자열을 가져오기 위해 Python에서 문자열을 부분 문자열로 만드는 방법이 있습니까?
myString[2:end]
와 같을까요?
2편을 떠난다는 것은 '끝까지'라는 뜻이고, 1편을 떠나면 처음부터 시작하는 것인가?
>>> x = "Hello World!" >>> x[2:] 'llo World!' >>> x[:2] 'He' >>> x[:-2] 'Hello Worl' >>> x[-2:] 'd!' >>> x[2:-2] 'llo Worl'
Python은 이 개념을 "슬라이싱"이라고 부르며 단순한 문자열 이상에서 작동합니다. 여기 에서 종합적인 소개를 살펴보십시오.
다른 사람이 언급하지 않았기 때문에 완전성을 위해. 배열 슬라이스의 세 번째 매개변수는 단계입니다. 따라서 문자열을 뒤집는 것은 다음과 같이 간단합니다.
some_string[::-1]
또는 대체 문자를 선택하는 것은 다음과 같습니다.
"Hello- -World"[::2] # outputs "Hello World"
문자열을 앞뒤로 이동하는 기능은 시작 또는 끝에서 슬라이스를 배열할 수 있는 일관성을 유지합니다.
일반적으로 Substr()(예: PHP 및 Perl)은 다음과 같이 작동합니다.
s = Substr(s, beginning, LENGTH)
따라서 매개변수는 beginning
및 LENGTH
입니다.
그러나 Python의 동작은 다릅니다. 시작과 END(!) 다음에 하나가 필요합니다. 이것은 초보자가 식별하기 어렵습니다. 따라서 Substr(s, 시작, LENGTH)의 올바른 대체는 다음과 같습니다.
s = s[ beginning : beginning + LENGTH]
이를 달성하는 일반적인 방법은 문자열 슬라이싱입니다.
MyString[a:b]
는 인덱스 a에서 (b - 1)까지의 하위 문자열을 제공합니다.
여기에는 한 가지 예가 누락된 것 같습니다: 전체(얕은) 복사.
>>> x = "Hello World!" >>> x 'Hello World!' >>> x[:] 'Hello World!' >>> x==x[:] True >>>
이것은 시퀀스 유형(인턴된 문자열이 아님), [:]
의 사본을 생성하기 위한 일반적인 관용구입니다. Shallow는 목록을 복사합니다. 명백한 이유 없이 사용되는 Python 목록 슬라이스 구문을 참조하세요.
세 번째 문자에서 문자열 끝까지 새 문자열을 얻기 위해 Python에서 문자열을 부분 문자열로 만드는 방법이 있습니까?
myString[2:end]
와 같을까요?
예, 이것은 이름 end
를 상수 싱글톤 None
할당하거나 바인딩 하면 실제로 작동합니다.
>>> end = None >>> myString = '1234567890' >>> myString[2:end] '34567890'
슬라이스 표기법에는 3가지 중요한 인수가 있습니다.
지정되지 않았을 때의 기본값은 None
이지만 명시적으로 전달할 수 있습니다.
>>> stop = step = None >>> start = 2 >>> myString[start:stop:step] '34567890'
2편을 떠나는 것이 '끝까지'를 의미한다면, 1편을 떠나면 처음부터 시작하는 것인가?
예:
>>> start = None >>> stop = 2 >>> myString[start:stop:step] '12'
슬라이스에 시작을 포함하지만 중지까지만 포함하고 중지는 포함하지 않습니다.
단계가 None
이면 기본적으로 슬라이스는 단계에 1
음의 정수를 사용하면 Python은 끝에서 처음으로 이동할 만큼 충분히 똑똑합니다.
>>> myString[::-1] '0987654321'
슬라이스 표기법 설명 질문에 대한 답변 에서 슬라이스 표기법을 자세히 설명합니다.
"끝"을 제외하고 바로 거기에 있습니다. 슬라이스 표기법이라고 합니다. 귀하의 예는 다음과 같아야 합니다.
new_sub_string = myString[2:]
두 번째 매개변수를 생략하면 암시적으로 문자열의 끝입니다.
토론에 두 가지 요점을 추가하고 싶습니다.
None
사용하여 "시작부터" 또는 "끝까지"를 지정할 수 있습니다.
'abcde'[2:None] == 'abcde'[2:] == 'cde'
이것은 빈 공간을 인수로 제공할 수 없는 함수에서 특히 유용합니다.
def substring(s, start, end): """Remove `start` characters from the beginning and `end` characters from the end of string `s`. Examples -------- >>> substring('abcde', 0, 3) 'abc' >>> substring('abcde', 1, None) 'bcde' """ return s[start:end]
파이썬에는 슬라이스 객체가 있습니다:
idx = slice(2, None) 'abcde'[idx] == 'abcde'[2:] == 'cde'
myString에 오프셋 6에서 시작하고 길이가 9인 계좌 번호가 포함되어 있으면 다음과 같이 계좌 번호를 추출할 수 있습니다. acct = myString[6:][:9]
.
OP가 이를 수락하면 실험적인 방식으로 다음을 시도할 수 있습니다.
myString[2:][:999999]
작동합니다 - 오류가 발생하지 않고 기본 '문자열 패딩'이 발생하지 않습니다.
글쎄, 나는 PHP 스크립트를 파이썬으로 번역해야 하는 상황이 있었고, substr(string, beginning, LENGTH)
사용이 많이 있었습니다.
Python의 string[beginning:end]
선택했다면 끝 인덱스를 많이 계산해야 하므로 더 쉬운 방법은 string[beginning:][:length]
를 사용하는 것이어서 많은 문제를 해결했습니다.
놓쳤을 수도 있지만 여기에서 변수에 대해 더 이상 논의하지 않기 때문에 이 페이지에서 원래 질문에 대한 완전한 답변을 찾을 수 없습니다. 그래서 계속 검색을 해야 했습니다.
나는 아직 논평할 권한이 없기 때문에 여기에 내 결론을 추가하겠습니다. 이 페이지에 액세스할 때 관심이 있는 사람은 저뿐만이 아니었습니다.
>>>myString = 'Hello World' >>>end = 5 >>>myString[2:end] 'llo'
첫 번째 부분을 떠나면 얻을 수 있습니다.
>>>myString[:end] 'Hello'
그리고 중간에 :를 남겨두면 5번째 문자가 되는 가장 간단한 부분 문자열을 얻게 됩니다(0부터 시작하므로 이 경우에는 공백입니다).
>>>myString[end] ' '
하드코딩된 인덱스를 사용하는 것 자체가 엉망이 될 수 있습니다.
이를 피하기 위해 Python은 내장 객체 slice()
합니다.
string = "my company has 1000$ on profit, but I lost 500$ gambling."
내게 남은 돈이 얼마나 되는지 알고 싶다면.
일반 솔루션:
final = int(string[15:19]) - int(string[43:46]) print(final) >>>500
슬라이스 사용:
EARNINGS = slice(15, 19) LOSSES = slice(43, 46) final = int(string[EARNINGS]) - int(string[LOSSES]) print(final) >>>500
슬라이스를 사용하면 가독성을 얻을 수 있습니다.
a="Helloo" print(a[:-1])
위의 코드에서 [:-1]은 처음부터 최대 한도-1까지 인쇄하도록 선언합니다.
출력:
>>> Hello
참고: 여기서 [:-1]은 [0:-1] 및 [0:len(a)-1]과 동일합니다.
a="I Am Siva" print(a[2:])
산출:
>>> Am Siva
위의 코드에서 a [2:]는 인덱스 2부터 마지막 요소까지 a를 인쇄하도록 선언합니다.
문자열을 인쇄하기 위해 최대 제한을 설정하면 (x)와 같이 문자열이 (x-1)까지 인쇄되고 목록이나 문자열의 인덱스는 항상 0에서 시작한다는 것을 기억하십시오.
str1='There you are' >>> str1[:] 'There you are' >>> str1[1:] 'here you are' #To print alternate characters skipping one element in between >>> str1[::2] 'Teeyuae' #To print last element of last two elements >>> str1[:-2:-1] 'e' #Similarly >>> str1[:-2:-1] 'e' #Using slice datatype >>> str1='There you are' >>> s1=slice(2,6) >>> str1[s1] 'ere '
출처 : http:www.stackoverflow.com/questions/663171/how-do-i-get-a-substring-of-a-string-in-python
문자열을 날짜 시간으로 변환 (0) | 2021.11.23 |
---|---|
jQuery를 사용하여 드롭다운 목록(선택 상자)에서 선택한 텍스트 가져오기 (0) | 2021.11.23 |
새 탭이 아닌 새 탭에서 URL 열기 (0) | 2021.11.19 |
GitHub의 README.md에 이미지를 추가하는 방법은 무엇입니까? (0) | 2021.11.19 |
Git을 사용하여 원격 저장소에 태그를 푸시하는 방법은 무엇입니까? (0) | 2021.11.19 |