파이썬 2.7을 사용하고 있습니다. 아래와 같이 이름 변수에 지정된 문자열이있는 경우
name = "Test with-name and_underscore"
이것을 이름 변수에 할당 할 수있는 문자열로 어떻게 변환 할 수 있습니까?
name = "TestWithNameAndUnderscore"
정규 표현식이 갈 길이입니까 아니면 파이썬이 그것을 수행하는 내장 함수를 가지고 있습니까 ....
그래서 내가 찾고있는 것은 문자열이 밑줄이나 대시 또는 공백 또는 특수 문자와 함께 들어올 때 동일한 것으로 변환되지만 밑줄 / 대시 / 공백 / 특수 문자 및 해당 단어의 초기 문자는 없습니다. "test name-is this_here"에서 "TestNameIsThisHere"와 같이 대문자로 시작합니다.
그리고 공백이 없거나 특수 문자가 없으면 아무것도하지 마십시오. 따라서 문자열이 "Helloworld"이면 건너 뛰고 계속 진행합니다.
내가이 작업을 수행하는 이유는 python boto를 사용하여 AWS 용으로 무언가를 작성하고 있으며 리소스를 호출 할 수있는 이름에 제한이 있기 때문입니다. 영숫자가 아니어야합니다.
>>> import re
>>> name = "Test with-name and_underscore"
>>> print(''.join(x.capitalize() for x in re.compile(r'[^a-zA-Z0-9]').split(name)))
TestWithNameAndUnderscore
필요한 경우 선행 숫자도 제거 할 수 있습니다. 다음은이를 수행하고 결과 문자열이 비어 있지 않은지 확인하는 약간 더 강력한 예제입니다.
>>> import re
>>> def fix_id(s, split=re.compile('[^a-zA-Z0-9]+|^[0-9]+').split):
... result = ''.join(x.capitalize() for x in split(s))
... if not result:
... raise ValueError('Invalid ID (empty after edits)')
... return result
...
>>> fix_id("Test with-name and_underscore")
'TestWithNameAndUnderscore'
>>> fix_id("123 Test 456 with-name and_underscore 789")
'Test456WithNameAndUnderscore789'
>>> fix_id("Thisshouldbeunmolested")
'Thisshouldbeunmolested'
>>> fix_id('123')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in fix_id
ValueError: Invalid ID (empty after edits)
이들 중 어느 것도 식별자의 고유성을 보장하지 않습니다. 예를 들어 "Mary-Sue"및 "mary sue"는 동일한 식별자에 매핑됩니다. 다른 식별자에 매핑하는 데 필요한 경우 기호를 매핑하고 필요한 경우 접미사를 추가하는 캐시 사전을 추가 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다