Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Editing particular lines of a text file.

Reply
Thread Tools

Editing particular lines of a text file.

 
 
Shriphani
Guest
Posts: n/a
 
      10-09-2007
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

 
Reply With Quote
 
 
 
 
Tim Williams
Guest
Posts: n/a
 
      10-09-2007
On 09/10/2007, Shriphani <(E-Mail Removed)> 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.



infile = open('infile.txt')
outfile = open('outfile.txt','w')
for line in infile:
if 'msgid' in line:
# transform line
# make sure the line ending is intact
outfile.write(line)
infile.close()
outfile.close()

or maybe

infile = open('infile.txt')
outfile = open('outfile.txt','w')
new_file = []
for line in infile:
if 'msgid' in line:
# transform line
# make sure the line ending is intact
new_file.append(line)
outfile.write(''.join(new_file)
infile.close()
outfile.close()




--

Tim Williams
 
Reply With Quote
 
 
 
 
Larry Bates
Guest
Posts: n/a
 
      10-09-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
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Firefox - Rich Text Editing: Cannot do a text bold...? deostroll Javascript 1 01-11-2008 09:49 PM
Preserve blank lines when add multiple lines of text to a cell Cah Sableng Javascript 0 04-23-2007 04:46 AM
Are you looking for high quality photo editing and video editing? gwanglu@gmail.com C Programming 0 07-19-2006 12:32 PM
To delete few lines and add few lines at the end of a text file using c program Murali C++ 2 03-09-2006 04:45 PM
Regular expression to match particular lines between markers MENTAT Perl Misc 5 02-15-2005 10:40 AM



Advertisments