1

私を助けてください!

複数行のテキストファイルをピッグラテン語に変換しています。

例:Pig Latinの翻訳:これは例です。する必要があります:Histay siaynaayxampleeay。

句読点を本来あるべき場所に残す必要があります(ほとんどの場合、文の終わり)。また、元の大文字で始まる単語は、ピッグラテンバージョンの大文字で始まり、残りは文字は小文字です。

これは私のコードです:

def main():
    fileName= input('Please enter the file name: ')

    validate_file(fileName)
    newWords= convert_file(fileName)
    print(newWords)


def validate_file(fileName):
    try:
        inputFile= open(fileName, 'r')
        inputFile.close()
    except IOError:
        print('File not found.')


def convert_file(fileName):
    inputFile= open(fileName, 'r')
    line_string= [line.split() for line in inputFile]

    for line in line_string:
        for word in line:
            endString= str(word[1:])
            them=endString, str(word[0:1]), 'ay'
            newWords="".join(them)
            return newWords

私のテキストファイルは次のとおりです。

This is an example. 

My name is Kara!

そして、プログラムは次のように戻ります。

Please enter the file name: piglatin tester.py
hisTay
siay
naay
xample.eay
yMay
amenay
siay
ara!Kay
None

どうすれば彼らがいた行に印刷することができますか?また、句読点の問題とキャピタライゼーションにどのように対処しますか?

4

2 に答える 2

2

これが私のコードの作り直しです。nltkの使用を検討する必要があります。単語のトークン化をより堅牢に処理します。

def main():
    fileName= raw_input('Please enter the file name: ')

    validate_file(fileName)
    new_lines = convert_file(fileName)
    for line in new_lines:
        print line

def validate_file(fileName):
    try:
        inputFile= open(fileName, 'r')
        inputFile.close()
    except IOError:
        print('File not found.')

def strip_punctuation(line):
    punctuation = ''
    line = line.strip()
    if len(line)>0:
        if line[-1] in ('.','!','?'):
            punctuation = line[-1]
            line = line[:-1]
    return line, punctuation

def convert_file(fileName):
    inputFile= open(fileName, 'r')
    converted_lines = []
    for line in inputFile:
        line, punctuation = strip_punctuation(line)
        line = line.split()
        new_words = []
        for word in line:
            endString= str(word[1:])
            them=endString, str(word[0:1]), 'ay'
            new_word="".join(them)
            new_words.append(new_word)
        new_sentence = ' '.join(new_words)
        new_sentence = new_sentence.lower()
        if len(new_sentence):
            new_sentence = new_sentence[0].upper() + new_sentence[1:]
        converted_lines.append(new_sentence + punctuation)
    return converted_lines
于 2013-03-14T03:06:21.133 に答える
0

私は句読点以外の仕事をします。私はまだ解決策を考えています。これが私のコードです:

def convert_file(fileName):
    inputFile = open(fileName,'r')
    punctuations = ['.',',','!','?',':',';']
    newWords = []
    linenum = 1

    for line in inputFile:
        line_string  = line.split()
        for word in line_string:
            endString= str(word[1]).upper()+str(word[2:])
            them=endString, str(word[0:1]).lower(), 'ay'
            word = ''.join(them)
            wordAndline = [word,linenum]
            newWords.append(wordAndline)
        linenum +=1
    return newWords

これは、単語とその行をファイルに返すという点で異なります。

['Histay', 1], ['Siay', 1], ['Naay', 1], ['Xample.eay', 1], ['Ymay', 3], ['Amenay', 3], ['Siay', 3], ['Ara!kay', 3]
于 2013-03-14T03:28:35.803 に答える