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