python pig latin converter
Please help me!
I am converting a text file with multiple lines to pig latin.
Example: the Pig Latin translation of: This is an example. should be: Histay siay naay xampleeay.
I need any punctuation to be left where it should be (end of the sentence in most cases) I also need any word that starts with a capital letter in the original to start with a capital letter in the pig latin version, with the rest of the letters lowercase.
This is my code:
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
my text file is:
This is an example.
My name is Kara!
And the program returns:
Please enter the file name: piglatin tester.py
hisTay
siay
naay
xample.eay
yMay
amenay
siay
ara!Kay
None
How do I get them to print out in the lines they were in? And also how do I deal with the punctuation issue and the capitalization?
Here is my reworking of your code. You should consider working with nltk. It has much more robust handling of word tokenisation.
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