472,784 Members | 897 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,784 software developers and data experts.

Python to search text file string and replace it

Hi ,

i am in the middle of creating the script to match the string and replace it

in mount.txt
mickey:/work1 /work1 bla bla bla
mickey:/work2 /work2 bla bla bla
micket:/job /job bla bla bla

Expand|Select|Wrap|Line Numbers
  1. #!/usr/bin/python
  2. import string
  3. s = open("/usr2/py/mount.txt","r+")
  4. for line in s.readlines():
  5.    print line
  6.    string.replace(line, 'mickey','minnie')
  7.    print line
  8. s.close()
However, the string.replace seems not working, any advice??? Thank you!

I am using CentOS 4.6 and the python is 2.3.4
Jun 4 '09 #1
7 164264
2,851 Expert Mod 2GB
Hello DannyMc,

string.replace() does not modify the argument string in place, but returns a modified string. You must make an assignment. Unless your file is very large, I would suggest updating the text in the file by reading the file, modifying the text, and writing the modified text back to the file. You can use string method replace() instead of importing the string module.
Expand|Select|Wrap|Line Numbers
  1. s = open("mount.txt").read()
  2. s = s.replace('mickey', 'minnie')
  3. f = open("mount.txt", 'w')
  4. f.write(s)
  5. f.close()
Jun 4 '09 #2
thanks for the solution bvdet!!
Jun 5 '09 #3
511 Expert 256MB
you can use fileinput for inplace editing
Expand|Select|Wrap|Line Numbers
  1. import fileinput
  2. for line in fileinput.FileInput("file", inplace=1):
  3.     line=line.replace("old","new")
  4.     print line
Jun 11 '09 #4
Hi guys, i managed to solve my problem with the following scripts:

Expand|Select|Wrap|Line Numbers
  1. #!/usr/bin/python
  2. import re
  3. #fstab location, use w mode as need to overwrite whole file.
  4. s = open("/usr2/py/mount.txt","r")
  5. #temp txt file to store new mount.
  6. tmpfile = open("/usr2/py/tmp.txt","a")
  7. #new nas mount point
  8. newmount = open("/usr2/py/newmount.txt","r")
  9. #search pg-swnas1 line
  10. for line in s.readlines():
  11.     if re.search("filer", line, re.IGNORECASE) != None:
  12.         print line
  13.     else:
  14.         tmpfile.write(line)
  15. #read the latest mount point
  16. readmount = newmount.read()
  17. #append to temp file
  18. tmpfile.write(readmount)
  19. s.close()
  20. tmpfile.close()
  21. tmpfile = open("/usr2/py/tmp.txt","r")
  22. readtmp = tmpfile.read()
  23. s = open("/usr2/py/mount.txt","w")
  24. s.write(readtmp)
  26. tmpfile.close()
  27. newmount.close()
Though the code works, but it seems not a clean code. Is there anyway to simplify it???
Jun 25 '09 #5
2,851 Expert Mod 2GB
I am a bit unclear about what mount.txt and newmount.txt contain and what you need to replace. You do not need re. You can test for membership with the in operator. If I understand correctly, this should work (untested):
Expand|Select|Wrap|Line Numbers
  1. mountList = open("/usr2/py/mount.txt", "r").readlines()
  2. newmountList = open("/usr2/py/newmount.txt","r").readlines()
  3. outputList = [item for item in mountList if "filer" not in item.lower()]
  4. outputList.extend(newmountList)
  5. f = open("/usr2/py/mount.txt","w")
  6. f.write(''.join(outputList))
  7. f.close()
Jun 25 '09 #6
Works nice, thanks !
Aug 9 '17 #7
hi bvdet,

The script works fine for single file but how can i replace for multiple files in a directory .

could you write the script please .
My file extensions are .xlf
folder c:/mrit/

with kind regards,
Nov 4 '18 #8

Sign in to post your reply or Sign up for a free account.

Similar topics

by: Julie | last post by:
What is the *fastest* way in .NET to search large on-disk text files (100+ MB) for a given string. The files are unindexed and unsorted, and for the purposes of my immediate requirements, can't...
by: thorpk | last post by:
I have an access database that i have added a pop up calendar to, the Table information for the Date Reported field is Date/Time format short date, input mask is 00/00/0000. i have created a...
by: fh217 | last post by:
Hi, Is there a way in Access to retrieve data in a specific area of a text file? The data ( a 6 character date in YYMMDD format ) always resides on the second line in positions 11 to 16. Thank...
by: ogo796 | last post by:
Hi everyone i want to search the text file,using pregmatch() but it seems like it dose't serch.maybe my serching pattern is not right.look at the following code. Myfile look like this...
by: Rina0 | last post by:
Cybersecurity engineering is a specialized field that focuses on the design, development, and implementation of systems, processes, and technologies that protect against cyber threats and...
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 2 August 2023 starting at 18:00 UK time (6PM UTC+1) and finishing at about 19:15 (7.15PM) The start time is equivalent to 19:00 (7PM) in Central...
by: erikbower65 | last post by:
Using CodiumAI's pr-agent is simple and powerful. Follow these steps: 1. Install CodiumAI CLI: Ensure Node.js is installed, then run 'npm install -g codiumai' in the terminal. 2. Connect to...
by: linyimin | last post by:
Spring Startup Analyzer generates an interactive Spring application startup report that lets you understand what contributes to the application startup time and helps to optimize it. Support for...
by: erikbower65 | last post by:
Here's a concise step-by-step guide for manually installing IntelliJ IDEA: 1. Download: Visit the official JetBrains website and download the IntelliJ IDEA Community or Ultimate edition based on...
by: Taofi | last post by:
I try to insert a new record but the error message says the number of query names and destination fields are not the same This are my field names ID, Budgeted, Actual, Status and Differences ...
by: DJRhino | last post by:
Private Sub CboDrawingID_BeforeUpdate(Cancel As Integer) If = 310029923 Or 310030138 Or 310030152 Or 310030346 Or 310030348 Or _ 310030356 Or 310030359 Or 310030362 Or...
by: lllomh | last post by:
Define the method first this.state = { buttonBackgroundColor: 'green', isBlinking: false, // A new status is added to identify whether the button is blinking or not } autoStart=()=>{
by: lllomh | last post by:
How does React native implement an English player?

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.