#-------------------------------------------------------------------------------
# Name: Task 1. Case Mapping
# Purpose:
#
# Author: Joseph.Lai
#
# Created: 22/05/2014
# Copyright: (c) Joseph.Lai 2014
# Licence: <your licence>
#-------------------------------------------------------------------------------
# List here instead of File Read for Testing purposes
list1 = [
3,
r"\Uunsw\E Computing",
r"\uprogcomp \l2013\u.",
r"T\LITLE CASE\E is also known as \L\uproper CASE\E",
]
def doGetFile():
# Here is where you enter code to read from a file. This has been done before in other examples
# Choose the list to process - list1 is the test, list2 is actual data
#return list1
# Open a file
fileName = "Input Task1 Case Mapping.txt"
fo = open(fileName, "r")
file=fo.read();
fo.close();
inp = file.splitlines(); # creates a list from the file input separated by \n (default)
return inp
def doProcess(sentence):
i = -1
newSentence = ""
control = False
upperLetter = False
upperWord = False
lowerLetter = False
lowerWord = False
while i < len(sentence)-1:
i +=1
# Determine if Control Characters
if sentence[i] == "\\":
control=True
elif control:
if sentence[i] == "U":
upperWord = True
lowerWord = False
elif sentence[i] == "L":
lowerWord = True
upperWord = False
#print("{} {}".format(lowerWord,upperWord),end =' ')
elif sentence[i] == "u":
upperLetter = True
elif sentence[i] == "l":
lowerLetter = True
elif sentence[i] == "E":
upperLetter = False
upperWord = False
lowerLetter = False
lowerWord = False
control = False
else:
# Normal letter
#print(sentence[i],end= ' ')
if upperLetter:
if sentence[i].isalpha(): #only change case if Alphabetic
newSentence = newSentence + sentence[i].upper()
else:
newSentence = newSentence + sentence[i]
upperLetter = False
elif lowerLetter:
if sentence[i].isalpha(): #only change case if Alphabetic
newSentence = newSentence + sentence[i].lower()
else:
newSentence = newSentence + sentence[i]
lowerLetter = False
elif upperWord:
if sentence[i].isalpha(): #only change case if Alphabetic
newSentence = newSentence + sentence[i].upper()
else:
newSentence = newSentence + sentence[i]
elif lowerWord:
if sentence[i].isalpha(): #only change case if Alphabetic
newSentence = newSentence + sentence[i].lower()
else:
newSentence = newSentence + sentence[i]
else:
newSentence = newSentence + sentence[i]
return newSentence
# ==================================================================================
first=True
count=0
maxcount = 0
maxLen = 100 #maximum num of letters in sentence
list = doGetFile()
# Process the List
# ==================================================================================
for sentence in list:
if len(sentence)>maxLen:
print("{} is too long by {} chars".format(sentence, len(sentence)-maxLen))
if count < 20:
if first:
maxcount = sentence
first = False
else:
newSentence = doProcess(sentence)
print("{} : {}".format(sentence,newSentence))
count+=1
else:
print("Maximum Records Reached")
break
print("Records Read: {} , Max: {}".format(count,maxcount))