|
发表于 2017-8-25 19:09:20
|
显示全部楼层
3种情况:1、无元音
2.1、元音后有辅音
2.2、元音后无辅音
用re,找元音后第一个辅音
- import re
- def fun(string):
- s = string.lower()
- if set(s).intersection(set("aeiou")):
- m = re.search(r"(?<=[aeiou])[^aeiou]", s)
- return s[:m.start()]+s[m.start():].capitalize() if m else s.upper()
- else:
- return s.capitalize().swapcase()
复制代码
如果不用 re 的话
我想先找出所有辅音,然后用字母外的东东拼长,
再与原string对比,,元素不同且不为元音的就是目标,取其索引
- def fun2(string):
- s = string.lower()
- cons = [i for i in s if i not in "aeiou"]
- nums = {k for i,j,k in zip(cons+list('。'*len(s)),s,range(len(s))) if i!=j and j not in "aeiou"}
-
- if cons == list(s):
- return s.capitalize().swapcase()
- else:
- return s[:min(nums)]+s[min(nums):].capitalize() if nums else s.upper()
复制代码 |
评分
-
查看全部评分
|