Open In App

How to Change Values in a String in Python

Last Updated : 01 Mar, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

In the world of programming, code refactoring is a common practice that involves restructuring existing computer code without changing its external behavior. One aspect of refactoring is changing variable names, which can be a tedious task when dealing with large codebases. However, Python provides various ways to streamline this process, allowing developers to efficiently change all variable names at once.

Change All Values in a String in Python

Below, are the methods of How To Change All Variable Names At Once In Python:

  • Using re-Module
  • Using tokenize() and StringIO
  • Using Find and Replace

Change Values in a String Using re-Module

In this example, the below code employs the re-module to define a function `rename_variables` that replaces occurrences of the old variable name with the new one in the given code. The provided example demonstrates renaming the variable “x” to “z” in the “old_code,”.

Python3




import re
 
def rename_variables(code, old_name, new_name):
    return re.sub(rf"\b{old_name}\b", new_name, code)
 
old_code = "x = 5; y = x + 3;"
new_code = rename_variables(old_code, "x", "z")
print(new_code)


Output

z = 5; y = z + 3;

Change Values in a String Using Find and Replace

In this example, below code defines a function `rename_variables` that replaces all occurrences of the old variable name with the new one in the given code using the `replace` method. In the provided example, it replaces “x” with “geeksforgeeks” in the “old_code,”.

Python3




def rename_variables(code, old_name, new_name):
    return code.replace(old_name, new_name)
 
old_code = "x = 5; y = x + 3;"
new_code = rename_variables(old_code, "x", "geeksforgeeks")
print(new_code) 


Output

geeksforgeeks = 5; y = geeksforgeeks + 3;

Change Values in a String Using tokenize() and StringIO

In this example, below code defines a function rename_variables that uses the tokenize module to replace variable names in the given code based on a dictionary of replacements. It prefixes replacements starting with non-alphabetic characters (excluding underscore) with ‘@’.

Python3




import tokenize
from io import StringIO
 
def rename_variables(code, replacements):
 
    result = []
    with StringIO(code) as f: 
       
        tokens = tokenize.generate_tokens(f.readline)
        for toktype, tokval, _, _, _ in tokens:
            if toktype == tokenize.NAME and tokval in replacements:
                new_name = replacements[tokval]
                 
                if not new_name[0].isalpha() and new_name[0] != '_':
                    new_name = f'@{new_name}'
                     
                result.append(new_name)
            else:
                result.append(tokval)
                 
    return ''.join(result)
 
# function execution:
old_code = "x = 5\ny = x + 3\nprint(my_variable)"
replacements = {'x': 'z', 'y': 'w', 'my_variable': 'geeks_for_geeks'}
 
new_code = rename_variables(old_code, replacements)
print(new_code)


Output

z=5
w=z+3
print(geeks_for_geeks)

Conclusion:

In conclusion, changing all variable names at once in Python is a crucial aspect of code refactoring. Whether employing regular expressions, find and replace techniques, or tokenizing with StringIO, developers can choose the method that best suits their project’s size and complexity. Efficient variable renaming enhances code readability and maintainability, contributing to a more robust and scalable codebase.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads