[python] 파이썬 문자열의 마지막 3자를 제거

파이썬에서 문자열에서 마지막 3자를 제거하려고 하는데이 문자가 무엇인지 알 수 없으므로 rstrip공백을 제거하고 대문자로 변환해야합니다.

예를 들면 다음과 같습니다.

foo = "Bs12 3ab"
foo.replace(" ", "").rstrip(foo[-3:]).upper()

이 작품은 지난 4 & 3 캐릭터가 있다면 모두 예를 풀어 동일하지만, 내가 원하는 어느 날 BS12을 제공 foo = "BS11 1AA"난 그냥 얻을'BS'

예를 들면 다음과 foo같습니다.

BS1 1AB
bs11ab
BS111ab

문자열은 6 ~ 7 자일 수 있으며 마지막 3을 삭제해야합니다 (공백이 없다고 가정).

팁이 있습니까?



답변

공백을 모두 제거하십시오.

foo = ''.join(foo.split())

마지막 세 문자 제거 :

foo = foo[:-3]

대문자로 변환 :

foo = foo.upper()

한 줄에 모든 코드가 있습니다.

foo = ''.join(foo.split())[:-3].upper()


답변

strip은 문자 기반이기 때문에 예상대로 작동하지 않습니다. 대신이 작업을 수행해야합니다.

foo = foo.replace(' ', '')[:-3].upper()


답변

>>> foo = "Bs12 3ab"
>>> foo[:-3]
'Bs12 '
>>> foo[:-3].strip()
'Bs12'
>>> foo[:-3].strip().replace(" ","")
'Bs12'
>>> foo[:-3].strip().replace(" ","").upper()
'BS12'


답변

rstrip을 약간 잘못 이해했을 수 있습니다. 문자열이 아니라 지정한 문자열의 모든 문자를 제거합니다.

이처럼 :

>>> text = "xxxxcbaabc"
>>> text.rstrip("abc")
'xxxx'

대신에

text = text[:-3] 

(공백을 아무것도없는 것으로 바꾼 후)


답변

>>> foo = 'BS1 1AB'
>>> foo.replace(" ", "").rstrip()[:-3].upper()
'BS1'


답변

정규 표현식을 피하려고 시도하지만 작동하는 것 같습니다.

string = re.sub("\s","",(string.lower()))[:-3]


답변

이게 뭐가 문제 야?

foo.replace(" ", "")[:-3].upper()