有重复时替换单个字符

时间:2015-07-06 21:37:58

标签: python loops python-3.x for-loop

我想要制作的是一个程序,逐字逐句地循环一个单词或短语:

word: "dog"
d
do
dog
do
d

我写了这个:

word = 'factory'
temp_word = ''
temp_word2 = ''

# Builds up 'factory' letter-by-letter into temp_word
for i in word:
    temp_word += i
    print(temp_word)

# Takes letters off 1 by 1
for i in reversed(word):
    temp_word2 = temp_word.replace(i, "")
    temp_word = temp_word2
    print(temp_word2)

输出正是我想要的:

f
fa
fac
fact
facto
factor
factory
factor
facto
fact
fac
fa
f

但是,如果有重复的字母,它会立即删除这两个字母,如下:

h
he
hel
hell
hello
hell
he
he
h

如何才能删除一个字母,而不删除两个字母?想不出解决方案

3 个答案:

答案 0 :(得分:1)

您可以将计数作为1传递给替换,以仅替换一个匹配项。

temp_word2 = temp_word.replace(i, "",1)

你也可以将最后一个字母切掉:

for i in reversed(word):
    temp_word2 = temp_word[:-1]

答案 1 :(得分:1)

使用tempvariable,还是允许你只使用字符串切片?

int a; // memory address should end in 0x0,0x4,0x8,0xC
int b[2]; // 8 bytes 0x0,0x8
int b[4]; // 16 bytes 0x0

答案 2 :(得分:1)

这是一个解决方案,它并不是最好的。根据您对此的要求,我可以提供更具体的解决方案

word = 'hello'
temp_word = ''
temp_word2 = ''

for k in word:
    temp_word += k
    print temp_word
while temp_word:
    temp_word = temp_word[:-1]
    print temp_word 

修改

我更喜欢这个版本

word = 'hello'
for k in list(range(1,len(word)+1)) + list(range(len(word)-1,1,-1)):
    print word[:k]