How to Replace String in File Using Python

Vaibhhav Khetarpal Feb 02, 2024
  1. Use the replace() Function When Input and Output Files Are Different
  2. Use the replace() Function When Only One File Is Used for Input and Output
How to Replace String in File Using Python

File handling is an essential aspect of any web application. Python, similar to other programming languages, supports file handling. It allows the programmers to deal with files and essentially perform some basic operations like reading, writing, and some other file handling options to operate on files.

The open() function can be used to open a file in the Python program. The file can be opened in either text or binary mode which is decided by the user. The open() function has several modes, all of which provide different accessibility options for the file to be opened in.

The term string in Python can be described as a cluster of Unicode characters enclosed within single or double quotes. Strings can be contained inside the text files that are to be opened in the Python code.

This tutorial will discuss different methods to replace a string in a file in Python.

Use the replace() Function When Input and Output Files Are Different

The replace() method in Python is utilized to search for a sub-string and replace it with another sub-string.

The replace() function has three parameters, namely oldvalue,newvalue, and count. Both oldvalue and newvalue are required values, and providing the function with the count parameter is optional.

The following code uses the replace() function to replace a string in Python when input and output files are different.

# the input file
fin = open("f1.txt", "rt")
# the output file which stores result
fout = open("f2.txt", "wt")
# iteration for each line in the input file
for line in fin:
    # replacing the string and write to output file
    fout.write(line.replace("gode", "God"))
# closing the input and output files
fin.close()
fout.close()

In the output of the above code, the string gode in the file will be replaced by the word God.

In the above code, we simultaneously work on two different files, f1.txt and f2.txt. f1.txt is opened in the read text rt mode and is referenced to fin. f2.txt is opened in the write text wt mode and is referenced to fout. Then the for loop is iterated, and for every occurrence of the string gode in the file, it gets replaced by the word God. Both the files are then closed after the necessary operations with the help of the close() function.

Use the replace() Function When Only One File Is Used for Input and Output

In this method, the same file is used as both input and output.

We use the with statement here along with the replace() function. The with context manager has a fundamental function: making the program shorter and much more readable.

When we use the with statement with File handling, the file that we opened in the Python code doesn’t need to be manually closed; it automatically closes after the with block terminates.

The following code uses the replace() function to replace a string in Python when the input and output file is the same.

with open("file1.txt", "rt") as file:
    x = file.read()

with open("file1.txt", "wt") as file:
    x = x.replace("gode", "God")
    fin.write(x)

The following code takes file1 as both the input and output file. Firstly, the file is opened in the read text rt mode, and the contents of the file are read and stored in a variable. Then, the file is closed and opened again, but in the write text mode wt this time. The string is replaced, and the data is written in this mode, and then the file is closed.

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

Related Article - Python File

Related Article - Python String