English 中文(简体)
Replace Multiple lines in Jython
原标题:

I have written a small program to replace a set of characters , but i also want two or more replace command in a single program .

Apart from it i also want to add an bracket after random set of characters.

This is my Program

file_read=open( <%=odiRef.getOption("READ")%>/EXPORT.XML , r )
file_write=open( <%=odiRef.getOption("READ")%>/EXPORT_1.XML , w )
count_record=file_read.read()
while count_record :
    s=count_record.replace( <Field name="ExeDb"type="java.lang.String"><![CDATA[S]]></Field> , <Field name="ExeDb" type="java.lang.String"><![CDATA[W]]></Field> )
    file_write.write(s)
    t=count_record.replace( <Field name="Txt" type="java.lang.String"><![CDATA[ , <Field name="Txt" type="java.lang.String"><![CDATA[TRIM( )
    file_write.write(t)
    count_record=file_read.read()
    print s
file_read.close()
file_write.close()

As you can see when i try to do with read line i get two lines in the final file.

1) I want both the replace command to work but with only single file.

2) Also is there is any way to read and write in a single file , i dont know why r+ was not working properly.

3) I also want to modify the line

t=count_record.replace( <Field name="Txt" type="java.lang.String"><![CDATA[ , <Field name="Txt" type="java.lang.String"><![CDATA[TRIM( )

to somethings like

t=count_record.replace( <Field name="Txt" type="java.lang.String"><![CDATA[ , <Field name="Txt" type="java.lang.String"><![CDATA[TRIM($$$)  )

where $$$ represents words or character present in the source File.

in short adding ) close bracket at the end , irrespective of any number of words or character after opening bracket .

Thanks so much for all your help.

问题回答

This is wrong on many levels - you can not simultaneously read and write from the same file, file.read() command reads entire contents, and you dont have to save after each replace. Something like this:

file = open( myfile ,  r+ )
contents = file.read()
file.seek(0) # rewind    
file.write(contents.replace( something ,  else ).replace( and this too ,  replaced ))

Comment code is garbled, including here... You need to replace that using regular expressions. See module "re" description, you basically need something like this:

import re
contents = re.sub(
   <Field name="Txt" type="java.lang.String"><![CDATA[TRIM(([^)]*)]]></Field> , 
   <Field name="Txt" type="java.lang.String"><![CDATA[TRIM(1)]]></Field> , 
  contents
)




相关问题
Simple JAVA: Password Verifier problem

I have a simple problem that says: A password for xyz corporation is supposed to be 6 characters long and made up of a combination of letters and digits. Write a program fragment to read in a string ...

Case insensitive comparison of strings in shell script

The == operator is used to compare two strings in shell script. However, I want to compare two strings ignoring case, how can it be done? Is there any standard command for this?

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

String initialization with pair of iterators

I m trying to initialize string with iterators and something like this works: ifstream fin("tmp.txt"); istream_iterator<char> in_i(fin), eos; //here eos is 1 over the end string s(in_i, ...

break a string in parts

I have a string "pc1|pc2|pc3|" I want to get each word on different line like: pc1 pc2 pc3 I need to do this in C#... any suggestions??

Quick padding of a string in Delphi

I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...

热门标签