-1

我正在尝试创建一个猪拉丁语翻译程序。它是我正在研究的 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("'")

但这也不起作用。谢谢!

4

3 回答 3

2

你不需要更换任何东西。导致问题的是格式字符串中的“%r”。

改变这个:

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

进入这个:

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

……一切都会好的。

于 2013-11-07T20:01:32.323 回答
1

如果要删除的字符不在字符串的末尾,str.strip则将不起作用。

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

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

看一个演示:

>>> 'aba'.strip('b')
'aba'
>>> 'aba'.replace('b', '')
'aa'
>>>
于 2013-11-07T19:55:59.527 回答
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
于 2013-11-07T19:56:20.303 回答