문자열 타이틀 케이스 파이썬에서 표준적인 방법이지만 같은 떠나는 제품 (예 : 단어는 대문자로 시작하는 모든 나머지 맡았다 문자는 소문자가) 거기에 and
, in
및 of
소문자?
답변
이것에는 몇 가지 문제가 있습니다. 분할 및 결합을 사용하는 경우 일부 공백 문자가 무시됩니다. 기본 제공 대문자 및 제목 메서드는 공백을 무시하지 않습니다.
>>> 'There is a way'.title()
'There Is A Way'
문장이 기사로 시작하는 경우 제목의 첫 단어가 소문자로 표시되는 것을 원하지 않습니다.
다음 사항을 염두에 두십시오.
import re
def title_except(s, exceptions):
word_list = re.split(' ', s) # re.split behaves as expected
final = [word_list[0].capitalize()]
for word in word_list[1:]:
final.append(word if word in exceptions else word.capitalize())
return " ".join(final)
articles = ['a', 'an', 'of', 'the', 'is']
print title_except('there is a way', articles)
# There is a Way
print title_except('a whim of an elephant', articles)
# A Whim of an Elephant
답변
titlecase.py 모듈을 사용하십시오 ! 영어로만 작동합니다.
>>> from titlecase import titlecase
>>> titlecase('i am a foobar bazbar')
'I Am a Foobar Bazbar'
답변
다음과 같은 방법이 있습니다.
>>> mytext = u'i am a foobar bazbar'
>>> print mytext.capitalize()
I am a foobar bazbar
>>> print mytext.title()
I Am A Foobar Bazbar
소문자 기사 옵션이 없습니다. 낮추고 싶은 기사 목록을 사용하여 직접 코딩해야합니다.
답변
Stuart Colville은 문자열을 제목 케이스로 변환하기 위해 John Gruber 가 작성한 Perl 스크립트 의 Python 포트 를 만들었지 만 New York Times Manual of style의 규칙에 따라 작은 단어를 대문자로 사용하지 않고 몇 가지 특별한 경우를 처리하지 않습니다.
이 스크립트의 영리함 :
-
if, in, of, on 등과 같은 작은 단어를 대문자로 표시 하지만 입력에서 잘못 대문자로 표시되면 대문자를 해제합니다.
-
스크립트는 첫 번째 문자가 아닌 대문자로 된 단어가 이미 올바르게 대문자로 표시된 것으로 가정합니다. 이것은 그들이“iTunes”나 더 나쁜 것은“Itunes”로 바꾸는 대신“iTunes”와 같은 단어를 그대로 두는 것을 의미합니다.
-
점이있는 단어는 건너 뜁니다. “example.com”및 “del.icio.us”는 소문자로 유지됩니다.
-
그들은 “AT & T”및 “Q & A”와 같은 이상한 경우를 처리하기 위해 특별히 하드 코딩 된 해킹을 가지고 있으며 둘 다 일반적으로 소문자 여야하는 작은 단어 (at 및 a)를 포함합니다.
-
제목의 첫 번째와 마지막 단어는 항상 대문자로 표시되므로 “무서워 할 내용 없음”과 같은 입력은 “무서워 할 내용 없음”으로 바뀝니다.
-
콜론 뒤의 작은 단어는 대문자로 표시됩니다.
여기에서 다운로드 할 수 있습니다 .
답변
capitalize (word)
그래야합니다. 나는 그것을 다르게 얻는다.
>>> mytext = u'i am a foobar bazbar'
>>> mytext.capitalize()
u'I am a foobar bazbar'
>>>
위의 답장에서 말했듯이 사용자 지정 대문자를 만들어야합니다.
mytext = u’i am a foobar bazbar ‘
def xcaptilize(word):
skipList = ['a', 'an', 'the', 'am']
if word not in skipList:
return word.capitalize()
return word
k = mytext.split(" ")
l = map(xcaptilize, k)
print " ".join(l)
이 출력
I am a Foobar Bazbar
답변
Python 2.7의 제목 메서드에는 결함이 있습니다.
value.title()
‘목수 반환 S 값이 목수 때 길잡이’ 의 길잡이
가장 좋은 해결책은 아마도 Stuart Colville의 타이틀 케이스를 사용하는 @BioGeek의 솔루션 일 것입니다. @Etienne이 제안한 것과 동일한 솔루션입니다.
답변
not_these = ['a','the', 'of']
thestring = 'the secret of a disappointed programmer'
print ' '.join(word
if word in not_these
else word.title()
for word in thestring.capitalize().split(' '))
"""Output:
The Secret of a Disappointed Programmer
"""
제목이 대문자로 시작하고 기사와 일치하지 않습니다.
