일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 딥러닝
- 데이터분석
- 빅데이터
- 소프트웨어
- 데이터베이스
- 소프트웨어공학
- 컴퓨터비전
- I'm Sorry
- 자료구조
- 코딩
- 컴퓨터공학
- 파이썬
- 네트워크보안
- 네트워크
- 데이터구조
- 프로그래밍언어
- 버전관리
- 프로그래밍
- 보안
- 머신러닝
- 사이버보안
- 자바스크립트
- 클라우드컴퓨팅
- 컴퓨터과학
- 알고리즘
- 2
- Yes
- 웹개발
- 데이터과학
- 인공지능
- Today
- Total
스택큐힙리스트
파이썬 문자열에서 마지막 구분자를 기준으로 분할하기? 본문
문자열에서 구분 기호의 마지막 발생에 따라 문자열을 분할하는 것에 대한 권장 파이썬 관용구는 무엇입니까? 예시:
# instead of regular split
>> s = a,b,c,d
>> s.split(,)
>> ['a', 'b', 'c', 'd']
# ..split only on last occurrence of ',' in string:
>>> s.mysplit(s, -1)
>>> ['a,b,c', 'd']
mysplit는 분리할 구분자의 발생을 나타내는 두번째 인자를 허용합니다. 일반적인 리스트 인덱싱과 같이, -1는 끝에서부터 마지막을 의미합니다. 어떻게 이를 수행할 수 있을까요?
답변 1
대신 .rsplit() 또는 .rpartition()를 사용하세요.
s.rsplit(',', 1)
s.rpartition(',')
str.rsplit() 는 몇 번 분할할지 지정할 수 있지만, str.rpartition() 는 한 번만 분할하지만 항상 일정한 요소 수 (접두사, 구분 기호 및 접미사)를 반환하며 한 번 분할할 때 속도가 더 빠릅니다.
데모:
>>> s = a,b,c,d
>>> s.rsplit(',', 1)
['a,b,c', 'd']
>>> s.rsplit(',', 2)
['a,b', 'c', 'd']
>>> s.rpartition(',')
('a,b,c', ',', 'd')
두 가지 방법 모두 문자열의 오른쪽 끝부터 분할을 시작합니다. 두 번째 인수로 최대값을 지정하여 str.rsplit() 문자열에서 오른쪽 끝의 발생만 분할할 수 있습니다.
만약 마지막 요소만 필요하지만 입력 문자열에 구분자가 없거나 입력의 매우 마지막 문자인 경우 다음 식을 사용하십시오:
# last element, or the original if no `,` is present or is the last character
s.rsplit(',', 1)[-1] or s
s.rpartition(',')[-1] or s
마지막 문자일 때도 구분 기호를 없애야 한다면 다음을 사용할 것입니다:
def last(string, delimiter):
Return the last element from string, after the delimiter
If string ends in the delimiter or the delimiter is absent,
returns the original string without the delimiter.
prefix, delim, last = string.rpartition(delimiter)
return last if (delim and last) else prefix
이것은 string.rpartition()가 구분자가 존재할 경우 두 번째 인수로만 반환하고 그렇지 않으면 빈 문자열을 반환한다는 사실을 이용합니다.
답변 2
파이썬에서 마지막 구분자를 기준으로 문자열 나누기파이썬에서는 문자열을 다룰때 간단하게 문자열을 나눌 수 있습니다. 일반적으로 문자열을 나눌때는 구분자(delimiter)를 기준으로 분리합니다. 이때 파이썬에서 제공하는 split() 함수를 사용하면 간단하게 문자열을 분리할 수 있습니다. 그러나 이때 일반적으로 사용하는 경우는 문자열의 첫번째 구분자를 기준으로 문자열을 분리하게 됩니다.
하지만 경우에 따라서는 마지막 구분자를 기준으로 문자열을 분리해야 할 필요가 있습니다. 이 경우에는 어떻게 해야 할까요? 이때는 파이썬 문자열에서 제공하는 rsplit() 함수를 사용하면 됩니다.
rsplit() 함수는 split() 함수와 거의 동일하지만, 분리할때 문자열의 마지막 구분자를 기준으로 분리한다는 차이가 있습니다. 예를 들어, 아래와 같은 문자열이 있다고 가정해 봅시다.
apple, banana, orange, grape,
일반적으로는 split() 함수를 사용하여 구분자를 , 로 설정하면 아래와 같이 문자열을 분리할 수 있습니다.
[apple, banana, orange, grape, ]
이때, 마지막 구분자를 제거하기 위해서는 리스트에서 마지막 빈 문자열을 제거해야합니다. 하지만 이 경우는 번거로울 뿐만 아니라, 마지막 구분자가 없는 경우(즉, 문자열의 끝이 구분자로 끝나지 않는 경우)에는 에러가 발생합니다.
하지만 rsplit() 함수를 사용하면 아래와 같이 마지막 구분자를 기준으로 문자열을 분리할 수 있습니다.
[apple, banana, orange, grape]
따라서, 문자열을 나눌때 마지막 구분자를 기준으로 분리해야 할 경우에는 rsplit() 함수를 사용하여 쉽게 문자열을 분리할 수 있습니다.