파이썬에서 문자열에서 마지막 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()