Editing particular lines of a text file.

Larry Bates larry.bates at websafe.com
Tue Oct 9 07:56:04 EDT 2007


Shriphani wrote:
> Hello all,
> 
> I am trying to create a script that looks at specific strings in a
> file like:
> 
> msgid "I am a disco dancer."
> 
> and compares the part in quotes to the keys in a dictionary, finds the
> value and creates a new line right after this string in the file. I
> have planned to write this as follows:
> 
> 1. Open the file in read mode
> 2. parse each line to figure out which line contains "msgid" and use
> the shlex module's split method to go and split this line and pick the
> 2nd element list[1].
> 3. find the value from the dictionary corresponding to the above
> element.
> 4. Insert the line. This part is where I face a problem. How do I
> plainly edit just one line. I would also like to look at some sample
> code that does this.
> 5. open a new file and write the new file with the inserted strings to
> it.
> 6. close both files opened.
> 
> Regards,
> Shriphani Palakodety
> 

Sounds like homework, but I'm feeling generous (not tested).

xlate={'"I am a disco dancer."':'"but John Travolta is better"'}


fp1=open('inputfile.txt', 'r')
fp2=open('outputfile.txt', 'w')

for line in fp1:
     #
     # Your description is unclear here about whether the new line
     # replaces the existing one or is inserted after it.
     #
     fp2.writeline(line)
     if line.startswith('msgid'):
	parts=line.split(' ')
         try: parts[1]=xlate[parts[1]]
	except:
             #
             # Handle exception if your translation dictionary does
             # not have the string you are looking for here.
             #
             raise KeyError

	newline=' '.join(parts)
         fp2.writeline(newline)

fp1.close()
fp2.close()


-Larry



More information about the Python-list mailing list