Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replace a word in a file

Tags:

python

file

I am new to Python programming...

I have a .txt file....... It looks like..

0,Salary,14000

0,Bonus,5000

0,gift,6000

I want to to replace the first '0' value to '1' in each line. How can I do this? Any one can help me.... With sample code..

Thanks in advance. Nimmyliji

like image 784
Nimmy Avatar asked Apr 01 '26 03:04

Nimmy


2 Answers

I know that you're asking about Python, but forgive me for suggesting that perhaps a different tool is better for the job. :) It's a one-liner via sed:

sed 's/^0,/1,/' yourtextfile.txt > output.txt

This applies the regex /^0,/ (which matches any 0, that occurs at the beginning of a line) to each line and replaces the matched text with 1, instead. The output is directed into the file output.txt specified.

like image 191
Amber Avatar answered Apr 03 '26 16:04

Amber


inFile = open("old.txt", "r")
outFile = open("new.txt", "w")
for line in inFile: 
    outFile.write(",".join(["1"] + (line.split(","))[1:]))

inFile.close()
outFile.close()

If you would like something more general, take a look to Python csv module. It contains utilities for processing comma-separated values (abbreviated as csv) in files. But it can work with arbitrary delimiter, not only comma. So as you sample is obviously a csv file, you can use it as follows:

import csv
reader = csv.reader(open("old.txt"))
writer = csv.writer(open("new.txt", "w"))
writer.writerows(["1"] + line[1:] for line in reader)

To overwrite original file with new one:

import os
os.remove("old.txt")
os.rename("new.txt", "old.txt")

I think that writing to new file and then renaming it is more fault-tolerant and less likely corrupt your data than direct overwriting of source file. Imagine, that your program raised an exception while source file was already read to memory and reopened for writing. So you would lose original data and your new data wouldn't be saved because of program crash. In my case, I only lose new data while preserving original.

like image 31
Rorick Avatar answered Apr 03 '26 16:04

Rorick



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!