python - 如何在python中的字符串中的每个字母之前添加一个点
问题描述
我们从用户那里得到一个字符串,想要小写它并删除元音并添加一个'。' 在它的每个字母之前。例如,我们得到 'aBAcAba' 并将其更改为 '.bcb' 。两件早期的事情已经完成,但我想要一些关于第三件的帮助。
str = input()
str=str.lower()
for i in range(0,len(str)):
str=str.replace('a','')
str=str.replace('e','')
str=str.replace('o','')
str=str.replace('i','')
str=str.replace('u','')
print(str)
for j in range(0,len(str)):
str=str.replace(str[j],('.'+str[j]))
print(str)
解决方案
一些东西:
您应该避免使用变量名
str
,因为这是内置函数使用的,所以我将其更改为st
在第一部分,不需要循环;
replace
将替换所有出现的子字符串对于最后一部分,循环遍历字符串并建立一个新字符串可能是最简单的。将此答案限制为基本语法,一个简单的
for
循环将起作用。
st = input()
st=st.lower()
st=st.replace('a','')
st=st.replace('e','')
st=st.replace('o','')
st=st.replace('i','')
st=st.replace('u','')
print(st)
st_new = ''
for c in st:
st_new += '.' + c
print(st_new)
另一个潜在的改进:对于第二部分,您还可以编写一个循环(而不是您的五个单独的replace
行):
for c in 'aeiou':
st = st.replace(c, '')
使用更先进技术的其他可能性:
对于第二部分,可以使用正则表达式:
st = re.sub('[aeiou]', '', st)
对于第三部分,可以使用生成器表达式:
st_new = ''.join(f'.{c}' for c in st)
推荐阅读
- javascript - AMP 自动完成:在 SELECT 事件上运行一些自定义 JS
- spring-boot - 在测试中替换 OAuth2 WebClient
- symfony - Symfony 5.0 和 KnpMenuBundle - 如何配置
- docker - 为什么Docker容器启动后总是退出?
- javascript - 加载太快时无法获取 URL 的标题
- javascript - 使用javascript从子表中获取名称值
- javascript - Aurelia - 如何在路线的子容器中注册单例?
- c# - 如何检查列表的所有元素是否不同
- python - 有没有办法获得框架孩子的参考?
- python - Python - ReadProcessMemory - int 太长无法转换