我想编写一个python函数,以便字符串中单词的第一个和最后一个字母大写。该字符串包含小写字母和空格。 我在想做类似的事情:
def capitalize(s):
s.title()
s[len(s) - 1].upper()
return s
但这似乎不起作用。有什么建议吗?
例如,字符串“我喜欢猫”应该成为“I LikE CatS”
答案 0 :(得分:3)
这是一个不错的单行。 (对你的高尔夫球手:P)
capEnds = lambda s: (s[:1].upper() + s[1:-1] + s[-1:].upper())[:len(s)]
它演示了当输入为0或1个字符时解决问题的另一种方法。
它可以很容易地应用于字符串以大写单个词:
' '.join(map(capEnds, 'I like cats'.split(' ')))
'I LikE CatS'
答案 1 :(得分:3)
def capitalize(s):
s, result = s.title(), ""
for word in s.split():
result += word[:-1] + word[-1].upper() + " "
return result[:-1] #To remove the last trailing space.
print capitalize("i like cats")
<强>输出强>
I LikE CatS
将title()
应用于整个字符串,然后对于字符串中的每个单词,将最后一个字符大写,并将它们追加在一起。
答案 2 :(得分:1)
尝试使用切片。
def upup(s):
if len(s) < 2:
return s.upper()
return ''.join((s[0:-1].title(),s[-1].upper())))
编辑:因为OP编辑了,现在他需要这个字符串中的每个单词 ...
' '.join(upup(s) for s in 'i like cats'.split())
Out[7]: 'I LikE CatS'
答案 3 :(得分:1)
我采取了一个有趣的单行:
def cap_both(phrase):
return ' '.join(map(lambda s: s[:-1]+s[-1].upper(), phrase.title().split()))
演示:
>>> cap_both('i like cats')
'I LikE CatS'
>>> cap_both('a')
'A'
答案 4 :(得分:0)
这就是我们要做的事情:
所以:
0)
words =“欢迎来到丛林!”
1)
>>> words= words.split()
2)
>>> words = [capitalize(x) for x in words]
3)
>>> words = " ".join(words)
4)
def capitalize(word):
return word[0].capitalize() + word[1:-1] + word[-1].capitalize()
答案 5 :(得分:0)
尝试这段简单易懂的代码,
st = 'this is a test string'
def Capitalize(st):
for word in st.split():
newstring = ''
if len(word) > 1:
word = word[0].upper() + word[1:-1] + word[-1].upper()
else:
word = word[0].upper()
newstring += word
print(word)
然后调用以下函数
Capitalize(st)
答案 6 :(得分:0)
一个很老的帖子,但另一个有趣的使用列表理解的班轮:
cap = lambda st: (" ").join([x.title().replace(x[-1], x[-1].upper()) for x in st.split()])
>>> cap("I like cats")
'I LikE CatS'