在Python中对字符串中的引号进行条带化或删除

时间:2013-11-07 19:53:33

标签: python python-2.7

我正在尝试创建一个猪拉丁语翻译程序。它是GitHub上我正在完成的100个项目的一部分。在我付出真正的努力之前,我不想检查解决方案。

这是我目前的代码,它确实完成了翻译,但问题是它在替换字母周围输出了一些难看的引号。

words = raw_input("Enter some text to translate to pig latin: ")
print "You entered: ", words

#Now I need to break apart the words into a list
words = words.split(' ')

#Now words is a list, so I can manipulate each one using a loop

for i in words:
    if len(i) >= 3: #I only want to translate words greater than 3 characters
        i = i + "%ray" % (i[0]) #The magical translator!
        i = i[1:] #I want to print the translation, but without the first letter
        print i.strip("'")

当我运行这个程序时,我得到了这个结果:

You entered: hello world
ello'h'ay
orld'w'ay

我不知道如何从我翻译的单词中删除引文。我想我会使用.join命令重新创建翻译的句子,但我现在正处于障碍中。

我试过了:

i = i.strip("'")

但这也不起作用。 谢谢!

3 个答案:

答案 0 :(得分:2)

您无需更换任何东西。这是导致问题的格式字符串中的'%r'。

改变这个:

i = i + "%ray" % (i[0]) 

进入这个:

i = i + "%say" % (i[0]) 

......一切都会好的。

答案 1 :(得分:1)

如果您要删除的字符不在字符串的末尾,则str.strip将无效。

相反,你应该在这里使用str.replace

print i.replace("'", "")

观看演示:

>>> 'aba'.strip('b')
'aba'
>>> 'aba'.replace('b', '')
'aa'
>>>

答案 2 :(得分:1)

.strip()剥去字符串的边距。请改用.replace("'")

for i in words:
    if len(i) >= 3:
        i = i + "%ray" % (i[0])
        i = i[1:]
        print i.replace("'")

输出:

You entered: hello world
ellohay
orldway