<질문>
Python에서 문자열에서 마지막 3자를 제거하려고 합니다. 이 문자가 무엇인지 모르기 때문에 사용할 수 없습니다.rstrip
, 또한 공백을 제거하고 대문자로 변환해야 합니다.
예를 들면 다음과 같습니다.
foo = "Bs12 3ab"
foo.replace(" ", "").rstrip(foo[-3:]).upper()
이것은 작동하고 나에게 준다"BS12"
이것이 내가 원하는 것이지만 마지막 4번째와 3번째 문자가 같으면 둘 다 잃게 됩니다.foo = "BS11 1AA"
난 그냥 얻을"BS"
.
의 예foo
다음과 같을 수 있습니다.
BS1 1AB
bs11ab
BS111ab
문자열은 6자 또는 7자일 수 있으며 마지막 3자를 삭제해야 합니다(공백이 없다고 가정).
<답변1>
모든 공백 제거:
foo = ''.join(foo.split())
마지막 세 문자 제거:
foo = foo[:-3]
대문자로 변환:
foo = foo.upper()
한 줄에 있는 모든 코드:
foo = ''.join(foo.split())[:-3].upper()
<답변2>
스트립은 문자 기반이기 때문에 예상대로 작동하지 않습니다. 대신 다음을 수행해야 합니다.
foo = foo.replace(' ', '')[:-3].upper()
<답변3>
>>> foo = "Bs12 3ab"
>>> foo[:-3]
'Bs12 '
>>> foo[:-3].strip()
'Bs12'
>>> foo[:-3].strip().replace(" ","")
'Bs12'
>>> foo[:-3].strip().replace(" ","").upper()
'BS12'
<답변4>
rstrip을 약간 오해했을 수 있습니다. 문자열이 아니라 지정한 문자열의 모든 문자를 제거합니다.
이와 같이:
>>> text = "xxxxcbaabc"
>>> text.rstrip("abc")
'xxxx'
대신에
text = text[:-3]
(공백을 아무것도 교체하지 않은 후)
<답변5>
>>> foo = 'BS1 1AB'
>>> foo.replace(" ", "").rstrip()[:-3].upper()
'BS1'
<답변6>
나는 정규 표현식을 피하려고 노력하지만 이것이 작동하는 것 같습니다.
string = re.sub("\s","",(string.lower()))[:-3]
<답변7>
split
slice
concentrate
이것은 초보자에게 좋은 운동이며 달성하기 쉽습니다.
또 다른 고급 방법은 다음과 같은 기능입니다.
def trim(s):
return trim(s[slice])
그리고 이 질문의 경우 마지막 문자만 제거하고 싶으므로 다음과 같이 작성할 수 있습니다.
def trim(s):
return s[ : -3]
나는 당신이 그 세 캐릭터가 무엇인지에 대해 걱정할 필요가 없다고 생각합니다. 그래서 당신은졌습니다. 그럼에도 불구하고 마지막 세 개를 제거하고 싶을 뿐입니다!
일부 특정 문자를 제거하려면 if 판단을 추가할 수 있습니다.
def trim(s):
if [conditions]: ### for some cases, I recommend using isinstance().
return trim(s[slice])
<답변8>
이게 무슨 문제야?
foo.replace(" ", "")[:-3].upper()
<답변9>
잘못된 순서로 작업을 수행하고 있지 않습니까? 귀하의 요구 사항은 다음과 같습니다foo[:-3].replace(" ", "").upper()
<답변10>
공백의 정의에 따라 다릅니다. 나는 일반적으로 공백을 공백, 탭, 줄 바꿈 및 캐리지 리턴이라고 부릅니다. 이것이 정의라면 모든 공백 문자를 바꾸기 위해 \s와 함께 정규식을 사용하려는 경우:
import re
def myCleaner(foo):
print 'dirty: ', foo
foo = re.sub(r'\s', '', foo)
foo = foo[:-3]
foo = foo.upper()
print 'clean:', foo
print
myCleaner("BS1 1AB")
myCleaner("bs11ab")
myCleaner("BS111ab")
'개발 > Python' 카테고리의 다른 글
[파이썬 Pillow] PIL 이미지에서 EXIF 데이터 제거 (0) | 2022.12.09 |
---|---|
[파이썬] 표준 라이브러리에서 docstring trim (PEP 257) (1) | 2022.12.08 |
[파이썬] logging을 비활성화하는 방법은? (0) | 2022.12.07 |
[파이썬] "if not ==" 과 "if !=" 비교 (0) | 2022.12.07 |