Python 把句子转换成拉丁语
所以我有一个函数,它接受一个句子,然后用拉丁语返回。代码如下:Python 把句子转换成拉丁语,python,Python,所以我有一个函数,它接受一个句子,然后用拉丁语返回。代码如下: import re from string import ascii_uppercase def isvowel(ch): vowels = ("a", "e", "i", "o", "u", "A", "E", "I", "O", "U") for i in range(len(ch)): if ch[i] in vowels: return i return -1
import re
from string import ascii_uppercase
def isvowel(ch):
vowels = ("a", "e", "i", "o", "u", "A", "E", "I", "O", "U")
for i in range(len(ch)):
if ch[i] in vowels:
return i
return -1
def format(ch):
if any(x in ascii_uppercase for x in ch):
ch = ch.capitalize()
m = re.search(r'\W+', ch)
if m:
ch = ch.replace(m.group(0), '') + m.group(0)
return ch
def igpay(astring):
vowels = ("a", "e", "i", "o", "u", "A", "E", "I", "O", "U")
words = astring.split()
count = 0
for ch in words:
vowel = isvowel(ch)
if vowel == 0:
astring = astring.replace(ch,(format(ch + "way")))
else:
astring = astring.replace(ch,(format(ch[vowel:] + ch[:vowel] + "ay")))
astring = astring.strip()
return astring
当我输入一个单词时,输出效果很好,但当我输入一个句子时,它就失控了
例如:
我得到的是:
>>>igpay("An apple a day keeps the doctor away")
>>>'Anwawaywayy awaywaypplewawaywayy awayway dawaywayy eepskay ethay octorday awaywaywawaywayy'
我应该得到:
>>>igpay("An apple a day keeps the doctor away")
>>>'Anway appleway away ayday eepskay ethay octorday awayway'
如果我分别输入每个单词,我会得到正确的返回值。发生了什么事?这是因为你正在通过替换词尾来修改循环中的整个句子 相反,您应该为列表中的每个单词执行此操作,将单词收集到列表中,并返回空格连接的单词:
def igpay(astring):
words = astring.split()
modified_words = []
for ch in words:
vowel = isvowel(ch)
if vowel == 0:
ch = ch.replace(ch, (format(ch + "way")))
else:
ch = ch.replace(ch, (format(ch[vowel:] + ch[:vowel] + "ay")))
modified_words.append(ch.strip())
return ' '.join(modified_words)
用法示例(正是您想要的):
>>> igpay("An apple a day keeps the doctor away")
'Anway appleway away ayday eepskay ethay octorday awayway'