0

在您说还有其他线程之前,请相信我,我已经阅读了所有内容,但我发现它们没有帮助,因为我的代码不同,而且我从一开始就一直在自己做。不是在寻找免费赠品,而是在寻找一些实际的帮助。

下面的代码显示我可以打开一个要翻译成 Pig Latin 的文件,去掉所有标点符号和无用的数字,然后返回文件中的单词列表。规定是我只需要翻译单词。如果单词以元音开头,则在末尾添加“ay”。如果单词以辅音开头,则删除单词的第一个字母,将其添加到单词的末尾并在末尾添加“ay”。

即:单词=“ordway:和橙色=”orangeay”

编码:

import re
import nltk

def usr_name_file():
    """
        Function:  Gets name of file to translate
        Parameter: n/a
        Returns: name of file to open 
    """
    nameFile = input('\nEnter the filename to translate into Piglatin >>>')

    return nameFile

def validate_name(nameFile):
    """
        Function:  Validates the existance of the usr file
        Parameter: Name of file input by usr
        Returns: Error if file not found, none if file found
    """
    try:
        inputFile= open(nameFile, 'r')
        inputFile.close()
    except IOError:
        print('Error: File not found in this directory.\nTry again.\n')

    return

def open_named_file(nameFile):
    """
        Function:  
        Parameter:
        Returns:
    """
    with open(nameFile, 'r') as readFile:
        data = readFile.read()
        print(data)         # import re makes this easier
        words_list = re.findall(r"[\w']+", data)  # extract punctuation
        sans_numbers = [x for x in words_list if not (x.isdigit() or x[0] == 
                                                   '-' and x[1:].isdigit())]  

    return sans_numbers


def translate(list):     # Help Here Please!
    """
        Function:  Takes in word and translates into piglatin
        Parameter:  Word
        Returns:  Translated word
    """

    return

def main():

    x = usr_name_file()
    validate_name(x)
    WordsList = open_named_file(x)
    print(WordsList)

if __name__ == '__main__':
    main()

这让我到了现在的位置,文件中的单词列表,没有双引号。未完成的 translate() 函数是我遇到困难的地方。下面是我想要它做的伪代码:

def translate(list):
    for vowel_word, consonant_word in list:
        if the word starts with a vowel, add "ay" to the end
        if the word starts with a consonant, replace the first letter to the
        end and add "ay"
    return translated_list

这个想法是,对于我传递给翻译函数的单词列表,我希望它进入并以相同的顺序创建一个新的单词列表,但已翻译。我现在知道如何做的唯一方法是创建一个元音单词列表和一个辅音单词列表,但是如果我这样做,我认为使用 .write() 用翻译的句子编写一个新文件会很困难我知道如何编写新的文件代码,所以我需要的只是这个函数。完全披露这是针对硬件的,但正如您所看到的,我并不是要免费赠品,只是对这个功能有一点帮助,非常感谢。

4

2 回答 2

0

提示:

  • 从空的翻译列表开始。
  • 为每个单词迭代单词列表:
    • 找到第一个元音的索引。
    • 如果为零,则添加“方式”
    • 如果不为零,则使用字符串切片,例如 word[i:]+word[:i]+'ay'
    • 将新单词附加到翻译列表中。
于 2015-04-06T02:54:55.780 回答
0

如果有人还在看这个,这里有一个解决方案(第一行中的“par”是你正在处理的文本块):

word_list = par.split(sep=None, maxsplit=-1)

def par_pig_short():

new_par = []

vowel_list = ["a", "e", "i", "o", "u"]

for word in word_list:      

    for char in word: 
        if char in vowel_list: 
            i = word.index(char)

    sol = word[i:] + word[:i] + 'ay'
    new_par.append(sol.lower())

final_new_par = ' '.join(new_par)    

return final_new_par
于 2019-04-08T23:59:46.817 回答