PYTHON 3:Pig Latin,再次,但是听我说

时间:2015-04-06 02:34:42

标签: python-3.x file-io latin

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

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

ie:word =“ordway: 和orange =“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()

这让我到了现在的位置,文件中的单词列表,没有punc。 未完成的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()编写带翻译句子的新文件将很困难。我知道如何编写新的文件代码,所以我需要帮助的是这个函数。完全披露这是为硬件,但你可以看到我不是要求免费赠品,只是对这个功能的一点帮助,非常感谢。

2 个答案:

答案 0 :(得分:0)

提示:

  • 从空翻译列表开始。
  • 为每个单词迭代单词列表:
    • 找到第一个元音的索引。
    • 如果为零,请添加'way'
    • 如果它不为零,请使用字符串切片,例如字[I:] +字[:I] + 'AY'
    • 在翻译列表中添加新单词。

答案 1 :(得分: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