#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jul 2013
    Posts
    2
    Rep Power
    0

    Name is not defined


    I have the following code, and I have reps name not defined. I am learning Python for just a few days, and I am not a programmer at all, so I really need an advice about what I am doing wrong here.

    Thank you in advance.

    Code:
    #!/usr/bin/python3
    
    # Make file backup
    
    import sys, string, os, shutil
    shutil.copyfile('inputfile/file.sdlxliff', 'backup/file.sdlxliff')
    
    # Read file
    
    file = open('inputfile/file.sdlxliff', 'r', encoding='utf-8')
    text = file.read()
    file.close()
    
    
    # Set the replacement function
    
    def replace_all(text, dic):
        for i, j in dic.items():
            text = text.replace(i, j)
        return text
    
    # Choose reps for correct target language 
    
    # Dictionary
    
    def choose_dic():
    	if 'source-language="en' in text == True:
    		reps = {'№ ':'№ ', ' года':' года', 'г. ':'г. ', 'году ':'году ', ' января':' января', ' февраля':' февраля', ' марта':' марта', ' апреля':' апреля', ' мая':' мая', ' июня':' июня', ' июля':' июля', ' августа':' августа', ' сентября':' сентября', ' октября':' октября', ' ноября':' ноября', ' декабря':' декабря', 'пункт ':'пункт ', 'пункта':' пункта', 'пункту ':'пункту ', 'пунктом ':'пунктом ', 'пункте':'пункте ', 'пункты ':'пункты ', 'пунктов ':'пунктов ', 'пунктам ':'пунктам ', 'пунктами ':'пунктами ', 'пунктах ':'пунктах ', 'статья ':'статья ', 'статьи ':'статьи ', 'статье ':'статье ', 'статью ':'статью ', 'статьей ':'статьей ', 'статьи ':'статьи ', 'статей ':'статей ', 'статьям ':'статьям ', 'статьями ':'статьями ', 'статьях ':'статьях ', 'правила ':'правила '} # Словарь для Target = Russian
    	else:
    		reps = {'no. ':'no. ', 'Article ':'Article '} # Словарь для Target = English
    	return reps
    
    
    # Make replacements
    
    choose_dic()
    
    replaced = replace_all(text, reps)
    
    # Save the replaced text to a new file
    
    filereplaced = open('outputfile/file.sdlxliff', 'w', encoding='utf-8')
    filereplaced.write(replaced)
    filereplaced.close()
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Oct 2012
    Posts
    194
    Rep Power
    2
    reps was defined locally in your choose_dict function. It doesn't exist in the global scope.

    Try changing the line towards the bottom of your code where you call that function from this:
    Code:
    choose_dic()
    to this:
    Code:
    reps = choose_dic()
    Report back,
    -Mek
  4. #3
  5. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jul 2013
    Posts
    2
    Rep Power
    0
    Originally Posted by Mekire
    reps was defined locally in your choose_dict function. It doesn't exist in the global scope.

    Try changing the line towards the bottom of your code where you call that function from this:
    Code:
    choose_dic()
    to this:
    Code:
    reps = choose_dic()
    Report back,
    -Mek
    Yes, it seems to be working now, but here's another problem - now I get
    Code:
    [Decode error - output not utf-8]
    when reps_eng is applied. It seems that I have to use some other code for unbreakable space, since the current one is somewhat wrong.

    UPD: I've missed a comma in the dictionary items - now all is working. Thank you very much.

IMN logo majestic logo threadwatch logo seochat tools logo