programing

파이썬에서 문자열을 타이틀 케이스로 변환하는 방법은 무엇입니까?

yellowcard 2023. 7. 19. 21:17
반응형

파이썬에서 문자열을 타이틀 케이스로 변환하는 방법은 무엇입니까?

예:

HILO -> Hilo
new york -> New York
SAN FRANCISCO -> San Francisco

이 작업을 수행하는 데 라이브러리 또는 표준 방법이 있습니까?

문서에서 권한을 사용하지 않는 이유:

>>> "they're bill's friends from the UK".title()
"They'Re Bill'S Friends From The Uk"

Pascal Case를 정말로 원한다면 다음을 사용할 수 있습니다.

>>> ''.join(x for x in 'make IT pascal CaSe'.title() if not x.isspace())
'MakeItPascalCase'

이 문자는 항상 소문자로 시작하고 영숫자가 아닌 문자도 제거합니다.

def camelCase(st):
    output = ''.join(x for x in st.title() if x.isalnum())
    return output[0].lower() + output[1:]
def capitalizeWords(s):
  return re.sub(r'\w+', lambda m:m.group(0).capitalize(), s)

re.sub대부분의 사용자에게 친숙한 문자열이 아닌 "교체" 기능을 사용할 수 있습니다.이 복제 함수는 다음과 함께 호출됩니다.re.Match패턴의 각 일치에 대한 개체 및 결과(문자열이어야 함)가 해당 일치에 대한 대체로 사용됩니다.

동일한 기능의 긴 버전:

WORD_RE = re.compile(r'\w+')

def capitalizeMatch(m):
  return m.group(0).capitalize()

def capitalizeWords(s):
  return WORD_RE.sub(capitalizeMatch, s)

이렇게 하면 패턴이 사전 컴파일되고 람다 대신 명명된 함수가 사용됩니다.

잠재적 라이브러리: https://pypi.org/project/stringcase/

예:

import stringcase
stringcase.camelcase('foo_bar_baz') # => "fooBarBaz"

공간을 남겨둘지는 의문이지만. (예를 들어 공간을 제거하는 것으로 나타나지만, 공간을 남겨두는 것에 주목하는 버그 추적기 문제가 있습니다.)

왜 안 써요?다음과 같은 방법으로 요구 사항을 충족할 수 있습니다.

def FixCase(st):
    return ' '.join(''.join([w[0].upper(), w[1:].lower()]) for w in st.split())

참고: 왜 제가 또 다른 답변을 제공합니까? 이 대답은 질문의 제목과 낙타 대소문자가 다음과 같이 정의된다는 개념을 기반으로 합니다. 일련의 단어들은 연결되어 있습니다(공백 없음!). 그래서 각 원래 단어들은 시리즈의 첫 번째 단어(완전히 소문자임)를 제외하고 대문자로 시작합니다(나머지는 소문자임).또한 "모든 문자열"은 ASCII 문자 집합을 가리킨다고 가정합니다. 유니코드는 이 솔루션에서 작동하지 않습니다.

간단하죠.

위의 정의를 고려할 때, 이 함수는

import re
word_regex_pattern = re.compile("[^A-Za-z]+")

def camel(chars):
  words = word_regex_pattern.split(chars)
  return "".join(w.lower() if i is 0 else w.title() for i, w in enumerate(words))

호출될 때, 이러한 방식으로 발생할 것입니다.

camel("San Francisco")  # sanFrancisco
camel("SAN-FRANCISCO")  # sanFrancisco
camel("san_francisco")  # sanFrancisco

덜 간단한

이미 카멜 케이스가 있는 문자열과 함께 제공되면 실패합니다.

camel("sanFrancisco")   # sanfrancisco  <-- noted limitation

훨씬 더 간단한

많은 유니코드 문자열과 함께 실패합니다.

camel("México City")    # mXicoCity     <-- can't handle unicode

저는 이러한 사례들에 대한 해결책이 없습니다(또는 창의력을 가지고 도입될 수 있는 다른 사례).그래서, 현악기와 관련된 모든 것들처럼, 여러분 자신의 가장자리 케이스를 덮고 유니코드로 행운을 빌어요!

.(),title를 사용하면 모든 단어의 첫 글자를 대문자로 변환하고 나머지는 작게 변환합니다.

>>> a='mohs shahid ss'
>>> a.title()
'Mohs Shahid Ss'
>>> a='TRUE'
>>> b=a.title()
>>> b
'True'
>>> eval(b)
True
def camelCase(st):
    s = st.title()
    d = "".join(s.split())
    d = d.replace(d[0],d[0].lower())
    return d

저는 이 게시물에 저의 작은 기여를 추가하고 싶습니다.

def to_camelcase(str):
  return ' '.join([t.title() for t in str.split()])

From code wars - 문자열에 대한 python의 simple .camelCase 메서드를 작성합니다.모든 단어는 공백 없이 첫 글자를 대문자로 표시해야 합니다.카멜케이스 (hello case") => 헬로케이스 카멜케이스 (hellocase) => 카멜케이스 워드

def camel_case(string):
    titled_string = string.title()
    space_joined_string = titled_string.replace(' ', '')
    return space_joined_string

언급URL : https://stackoverflow.com/questions/8347048/how-to-convert-string-to-title-case-in-python

반응형