在Python中创建一个与str.title()函数相同的函数



我的练习是编写一个与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)

最新更新