首页 > 解决方案 > 如何在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)

标签: python

解决方案


一些东西:

  • 您应该避免使用变量名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)

推荐阅读