对于以下代码我试图删除每个单词的第一个字符,但我的代码只删除了最后一个单词的第一个字符。我该怎么做才能删除每个单词的所有首字符。
ejmin = "ej pj dj"
tfl = [0,]
nw = ''
for i in range(len(ejmin)):
if ejmin[i] == ' ':
i = i + 1
tfl.append(i)
for i in tfl:
nw = ejmin.replace(ejmin[i], "")
print nw
答案 0 :(得分:2)
您的代码存在许多问题,但是针对您的错误的关键问题是,每次通过循环时,您都会分配给nw
,覆盖之前的所有分配。所以,当然,只有最后分配才重要!
只是修复它只会继续暴露更多层次的错误 - 令人惊讶的是你设法将这么多问题打包成这么一小段代码。例如,如果您分配到ejmin
而不是nw
,则会破坏所有进一步的索引。此外,ejmin.replace(ejmin[i]
不会替换“位置i
处的字符” - 它会替换等于该字符的每次出现。 & c - 这个代码现在几乎无法实现。
最好根据字符串不可变的核心思想从头开始重写(因此对字符串应用多个编辑很困难),而列表是可变的(所以编辑很好)。所以在开始时将你的字符串变成一个列表,编辑它,完成后将它变回一个字符串:
ejmin = "ej pj dj"
aslist = list(ejmin)
aslist[0] = ''
for i, c in enumerate(aslist):
if c == ' ': aslist[i] = ''
nw = ''.join(aslist)
答案 1 :(得分:0)
ejmin = "ej pj dj"
a=ejmin.split() #split it by space
for x in a:
t=x[1:] #slicing it from first character to end of word
print (t)
输出:
>>>
j
j
j
>>>
按空格字符拆分它们,并从第一个字符切片。
编辑:
ejmin = "ej pj dj"
a=ejmin.split()
for x in a:
z=x[0]
h=x+z
print (h)
输出:
>>>
eje
pjp
djd
>>>
答案 2 :(得分:0)
我通过切片
尝试了
ejmin = "ej pj dj"
for word in ejmin.split():
print word[1:],