在Python中编写字母替换脚本时遇到问题

时间:2015-08-31 20:14:21

标签: python list

我一直在尝试编写一个将输入转换为小写的脚本,擦除所有元音并在每个辅音之前放置一段时间。但我的脚本总是卡住/超时。你能救我一下吗?

input = raw_input()

input1 = input.lower()

input_list = list(input1)


for letter in input_list:
    if str(letter) == "a" or str(letter) == "o" or str(letter) == "y" or str(letter) == "e" or str(letter) == "u" or str(letter) == "i":
        input_list.pop(input_list.index(letter))
    else:
        input_list.insert(input_list.index(letter) - 1, ".")


print ''.join(input_list)

3 个答案:

答案 0 :(得分:4)

首先,您不应该在迭代时间内更改迭代,然后您可以简单地将元音放入集合中,并使用or操作数检查成员资格,而不是使用多个in某个项目你可以使用列表理解:

input = raw_input()
>>> input = raw_input()
this is a test

>>> ''.join(['.{}'.format(i) for i in input if i not in 'aoyeui'])
'.t.h.s. .s. . .t.s.t'

答案 1 :(得分:1)

你插入句号,然后找回自己的同一个辅音,然后你插入另一个句号,然后一直打开......

所以你陷入无限循环。

答案 2 :(得分:0)

word = "HeLLO"
print("".join(["." + i for i in re.sub("[aeiou]","",word.lower())]))

输出:

".h.l.l"
  1. 没有元音
  2. 全部小写
  3. 期间仅在辅音之前出现