我的练习是编写一个与str.title()
函数相同的函数。这是我目前为止糟糕的解决方案
def my_title(s):
list = []
for char in s:
if char.isalpha():
char = char.lower()
list.append(char)
for n in range(0,len(list)):
if list[n].isalpha():
list[n]=list[n].upper()
break
return ''.join(list)
你能把它重构成1个循环吗?
它能比这更简单吗?
def my_title(s):
l = ''
for n in range(0,len(s)):
l += s[n].lower() if n and s[n-1].isalpha() else s[n].upper()
return l
另一个正则表达式解决方案,只是为了好玩:
re.sub(r'bw', lambda m: m.group(0).upper(), s.lower())
这将匹配单词开头的任何"单词字符",并将每个字符大写。
s = list("1 33333ddedeEEEEE34343")
caps_flag = True
for i,c in enumerate(s):
if c.isalpha():
if caps_flag:
caps_flag = False
s[i] = c.upper()
else:
s[i] = c.lower()
print ''.join(s)
基于FatalError评论的更好版本
s = list("1 33333ddedeEEEEE34343".lower())
for i,c in enumerate(s):
if c.isalpha():
s[i] = c.upper()
break
print ''.join(s)