2016-06-23 3 views
-6

문자열을 소문자로 변환하면 사용자가 입력 한 원래 문자열로 어떻게 변환됩니까? 문자열을 원래 문자열로 다시 변환 할 특정 파이썬 함수를 검색했습니다. .swapcase()을 사용했지만 불행히도 작동하지 않았습니다. .lower()이 필요하다는 사실을 명심하십시오.문자열의 원래 케이스 복원

+7

왜 원본을 필요로 할 때 덮어 쓰겠습니까? 다른 변수에 저장하십시오. 이것은 [XY 문제] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)의 경우와 같습니다. –

+2

당신은 당신이 돌아올 수없는 정보를 잃어 버렸습니다. @BhargavRao가 말했듯이 ** 단지 원본을 주변에 보관하십시오 **. – jonrsharpe

+0

이 기능이 어떻게 작동 할 것으로 기대하십니까? f ("my string")'은 "MY STRING"또는 "My String"또는 "My StRiNg"를 반환해야하는지 어떻게 알 수 있습니까? – Phylogenesis

답변

0

수 없습니다. "Abc"와 "aBc"는 모두 소문자로 바뀌면 "abc"로 바뀝니다. unlowercase 방법이있는 경우 어떻게 두 경우를 구별 할 수 있습니까? "AbC"또는 "aBc"를 반환해야합니까? 문자열에는 포함 된 문자의 "메모리"가 없습니다.

0

불행히도이 기능이 없습니다. 왜 이렇게해야하는지 질문하는 대신, 문자열의 어떤 문자가 수정되었는지 추적하는 별도의 목록을 유지하는 것이 좋습니다. 이에 대한 두 가지 접근 방법은 다음을 유지합니다.

1. 원래 문자열의 색인 목록을 대문자로 유지하고 수정했습니다.

2. 길이 n의 목록을 유지하십시오. 여기서 n은 문자열의 길이이고, .lower로 문자를 수정 한 경우 값은 true입니다.

이 스타일을 사용하면이 목록을 만드는 소문자 메서드는 물론 보조 unlowercase 메서드도 수행하는 도우미 함수를 작성할 수 있습니다. 또는 가장 논리적으로 모든 사람이 말하는 것처럼 원래 변수의 인스턴스를 저장할 수 있습니다.

0

다시 변환 할 수 없습니다.

original = 'AbC' 
lowered = original.lower() 

당신은 또한 할 수는 딕셔너리에 모두 값을 저장하는 것입니다 수있는 무엇 : 당신이 할 수있는 것은 원래 고통을 유지하고 단지 소문자 하나에 대한 새로운 변수를 만들 수 있습니다. 예를 들어 문자열 '존 스미스'같은 이름이고 당신은 당신이 할 수있는 나중에 모두 '존 스미스'와 '존 스미스'를 사용 할 수 있도록하려면 :

name = {"original": "John Smith", "lowercase": "john smith"} 

print(name["original"]) 
//prints 'John Smith' 

print(name["lowercase"]) 
//prints 'john smith' 

Here's a working example

을 나는 이것이 당신이 성취하려는 것을 돕기를 바랍니다.

관련 문제