साथ एक स्ट्रिंग वहाँ पायथन में एक मानक तरीका एक स्ट्रिंग titlecase को Titlecasing है (अर्थात शब्द अपरकेस वर्णों के साथ शुरू, सभी शेष मामलों वर्ण लोअरकेस है), लेकिन 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
इन तरीकों के होते हैं:
>>> mytext = u'i am a foobar bazbar'
>>> print mytext.capitalize()
I am a foobar bazbar
>>> print mytext.title()
I Am A Foobar Bazbar
कोई लोअरकेस लेख विकल्प नहीं है। आपको उन लेखों की एक सूची का उपयोग करके खुद को कोड करना होगा, जिन्हें आप कम करना चाहते हैं।
titlecase.py लोअरकेस लेखों के एक सेपरेटर के साथ सूची तत्वों में शामिल हो जाता है। –
capitalize (word)
ऐसा करना चाहिए। मैं इसे अलग-अलग मिलता हूं।
>>> mytext = u'i am a foobar bazbar'
>>> mytext.capitalize()
u'I am a foobar bazbar'
>>>
ठीक उत्तर में ऊपर कहा के रूप में, आप एक कस्टम करना है भुनाने:
mytext = u'i एक 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
हूँ
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
"""
शीर्षक टोपी के साथ शुरू होता है इटालाइज्ड शब्द और यह लेख से मेल नहीं खाता है।
titlecase.py मॉड्यूल का उपयोग करें! केवल अंग्रेजी के लिए काम करता है।
>>> from titlecase import titlecase
>>> titlecase('i am a foobar bazbar')
'I Am a Foobar Bazbar'
यदि आप जिस स्ट्रिंग को कनवर्ट कर रहे हैं उसमें शीर्षक संख्या मॉड्यूल काम नहीं करती है, इसमें कहीं भी एक संख्या है। – Troy
@ ट्रॉय ऐसा लगता है कि संख्या मुद्दा तय है, या मैंने आपके एज केस को नहीं मारा है। पूर्व: शीर्षकपत्र ('एक 4 दो') -> 'वन 4 टू'। अब टाइटलकेस ('1one') -> '1one', लेकिन '1one'.title() ->' 1One '। हालांकि यह बाद का मामला एक बढ़त मामला है और मुझे यकीन नहीं है कि '1 एक' सही शीर्षक है। मैं भी अपनी व्याकरण पुस्तक को पकड़ने के लिए पर्याप्त चिंतित नहीं हूं। –
"321 ए ब्रॉडवे स्ट्रीट" के मामले में काम नहीं करेगा जहां मुझे "321 ब्रॉडवे स्ट्रीट" मिलता है। उपरोक्त धीरोसौर द्वारा प्रस्तावित समाधान का उपयोग "321 ए ब्रॉडवे स्ट्रीट" का उत्पादन करता है। – MoreScratch
a Perl script written by John Gruber की Stuart Colville has made a Python port शीर्षक मामले में तार कन्वर्ट करने के लिए लेकिन कई विशेष मामलों के लिए शैली के न्यूयॉर्क टाइम्स मैनुअल, साथ ही खानपान से नियमों के आधार पर छोटे शब्दों को बड़े अक्षरों टाल ।
इन लिपियों के चालाकी से कुछ:
वे जैसे छोटे शब्द फ़ायदा उठाने की है, में, की, पर, आदि, लेकिन उन्हें अन-भुनाने होगा अगर वे ग़लती से में पूंजीकृत कर रहे हैं इनपुट।
स्क्रिप्ट्स मानते हैं कि पहले वर्ण के अलावा पूंजीकृत अक्षरों वाले शब्द पहले ही सही ढंग से पूंजीकृत हैं। इसका मतलब है कि वे इसे "आईट्यून्स" या "बदतर", बदतर, "आईट्यून्स" में उलझाने के बजाय अकेले "आईट्यून्स" जैसे शब्द छोड़ देंगे।
वे लाइन डॉट्स के साथ किसी भी शब्द को छोड़ देते हैं; "Example.com" और "del.icio.us" लोअरकेस रहेगा।
वे हार्ड-कोडेड हैक्स विशेष रूप से की तरह "& एटी टी 'और' क्यू & ए ', जो दोनों के छोटे शब्दों (कम और एक) होते हैं जो आम तौर पर लोअरकेस होना चाहिए अजीब मामलों से निपटने के, की है।
शीर्षक का पहला और आखिरी शब्द हमेशा पूंजीकृत होता है, इसलिए "कुछ भी डरने के लिए" जैसे इनपुट को "डरने के लिए कुछ भी नहीं" में बदल दिया जाएगा।
कोलन के बाद एक छोटा शब्द पूंजीकृत किया जाएगा।
आप इसे here डाउनलोड कर सकते हैं।
पायथन 2.7 की शीर्षक विधि में इसका कोई दोष है।
value.title()
बढ़ई 'एस सहायक जब मूल्य बढ़ई है' वापस आ जाएगी रों सहायक
सबसे अच्छा समाधान शायद स्टुअर्ट Colville से titlecase का उपयोग कर @BioGeek से एक है। @Etienne द्वारा प्रस्तावित वही समाधान कौन सा है।
एक-लाइनर सूची समझ और त्रिगुट ऑपरेटर का उपयोग
reslt = " ".join([word.title() if word not in "the a on in of an" else word for word in "Wow, a python one liner for titles".split(" ")])
print(reslt)
ब्रेकडाउन:
for word in "Wow, a python one liner for titles".split(" ")
विभाजन एक सूची में स्ट्रिंग और शुरू की पाश के लिए (सूची comprehenstion में) एक
word.title() if word not in "the a on in of an" else word
मूल विधि title()
शीर्षक शीर्षक के लिए स्ट्रिंग का उपयोग करता है यदि यह कोई आलेख नहीं है
" ".join
(स्पेस)
- 1. अपवाद में पायथन अपवाद
- 2. अपवाद
- 3. अपवाद
- 4. अपवाद
- 5. अपवाद
- 6. अपवाद
- 7. अपवाद
- 8. अपवाद
- 9. अपवाद
- 10. अपवाद
- 11. एप्लिकेशन अपवाद और सिस्टम अपवाद
- 12. अनचेक अपवाद या रनटाइम अपवाद
- 13. बिज़टॉक स्कोप "कैच अपवाद" सामान्य अपवाद संदेश
- 14. अपवाद हैंडलिंग में विकल्प बनाम अपवाद
- 15. डब्ल्यूसीएफ - एक अपवाद या फॉल्ट अपवाद फेंको?
- 16. $ अपवाद छद्मवर्तनीय दृश्य स्टूडियो डीबगर (डॉलर अपवाद)
- 17. सी ++ अपवाद और एसटीडी से विरासत :: अपवाद
- 18. नई std :: अपवाद बनाम फेंक std :: अपवाद
- 19. "अपवाद के लिए बहुत अधिक मूल्य" अपवाद
- 20. जावा, कक्षा-विशिष्ट अपवाद बनाम मानक अपवाद
- 21. अनधिकृत एक्सेस अपवाद बनाम सुरक्षा अपवाद
- 22. PHP रेडिस त्रुटि: अपवाद अपवाद 'RedisException'
- 23. phpunit फेंक दिया अपवाद अपवाद 'PHPUnit_Framework_Exception
- 24. DirectoryInfo.EnumerateFiles (...) अनधिकृत एक्सेस अपवाद (और अन्य अपवाद)
- 25. डेटाकंट्रैक्ट अपवाद।
- 26. अपवाद स्टैक
- 27. Response.Redirect अपवाद
- 28. पकड़ने अपवाद
- 29. NoSuchMethod अपवाद
- 30. भोजन अपवाद
+1 "एक लेख से शुरू होने वाली वाक्य" केस – yassin
क्यों 'पुनः' आवश्यक है? एक '" ".plit' फ़ंक्शन है जो वही करता है। – wizzwizz4
@ wizzwizz4: 'str.split' संगत रिक्त स्थान पर विचार नहीं करता है। 're.split' रिक्त स्थान बरकरार रखता है। तो, यह समारोह किसी भी जगह नहीं खाता है। – dheerosaur