On Mon, 22 Aug 2005 22:14:55 +0200, Mohammed Altaj <[EMAIL PROTECTED]> wrote:
> >Dear all > >Sorry , I confused between two things , what i said in the last e-mail i >already managed to do using C code , But what i need to do using python >is : my input data : > >0 2 3 4 >1 2 4 >2 3 >3 4 > >what i suppose to do is , using the first line and start searching >number by number ,first i have 0 search in the rest of lines if there is >0 print out the all numbers except 0 , after that , start searching >using the 2ed element in the first line which is 2 , in the 2ed line we >have 1 , 4 . in the 3rd line we have 3 , in the 4th line we do not have >2. And so on for 3 and 4 , and also for the 2nd , 3rd lines , so the >output should be > >0 2 1 4 3 3 2 4 4 1 2 3 >1 2 3 4 3 >2 3 >3 4 > >And i managed to do this , but i did in the case of no space between >numbers,when i am reading from file , like >0234 >124 >23 >34 > >I want my code be able to deal with the space between numbers , and this >is my code again >def belong_to(x,a): > c=-1 > for i in range(len(a)-1): > if x==int(a[i]): > c=i > return c > >def list_belong(x,a): # This function to check if this line > c=-1 # line has been searched before or not > for i in range(len(a)): > if a[i]==x: > c=1 > break > return c > >x=0 >occur=[] > >in_file=open('data.dat','r') >out_file=open('result.dat','w') >fileList = in_file.readlines() >for k in fileList: > v=k > occur.append(k) > n=len(v)-1 > for i in range(n): > temp=int(v[i]) > print temp, > out_file.write(str(temp)) > for line in fileList: > if v!=line: > if list_belong(line,occur)!=1: > if belong_to(temp,line) != -1: > j=belong_to(temp,line) > for i in range(len(line)-1): > if i!=j: > print line[i], > out_file.write(line[i]) > > > > print > out_file.write("\n") > >out_file.close() >in_file.close() > > >Thanks > Does this do what you want? (except that it writes to stdout and doesn't print)? (note that I get 234 instead of 23 on the 3rd line of output) >>> # test with string file input and stdout output ... import StringIO >>> in_file = StringIO.StringIO("""\ ... 0 2 3 4 ... 1 2 4 ... 2 3 ... 3 4 ... """) >>> import sys >>> out_file = sys.stdout >>> >>> lines = [''.join(line.split()) for line in in_file] # clean out spaces and >>> '\n' >>> for i, line in enumerate(lines): ... for digit in line: ... out_file.write(digit) ... for followingline in lines[i+1:]: ... if digit not in followingline: continue ... line_sans_digit = followingline.replace(digit,'') ... out_file.write(line_sans_digit) ... out_file.write("\n") ... 021433244123 12343 234 34 Also note that I eliminated all duplicate digits from a selected line, rather than just the first match. Easy to change. Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list