On 10/04/2011 01:09 PM, lina wrote:
But I still don't know how to get the
statistic result of each column,

Thanks for further suggestions,

Best regards,

lina

As I said before, your current code counts across a line at a time, while you need to count vertically. That could be done by transposing the list of strings, but it's probably easier to just count them yourself. So set up a list of counters, all zero, and every time you see a desired character, increment the corresponding counter.

Here's the existing code:

#!/bin/python

import os.path

tokens=['B','E']

for fileName in os.listdir("."):
    result=[]
    if os.path.isfile(fileName) and os.path.splitext(fileName)[1]==".xpm":
        filedata = open(fileName)
        text=filedata.readlines()
        for line in text[0:]:
            result.append({t:line.strip().count(t) for t in tokens})
        for index,r in enumerate(result):
           outfiledata=open("fileName.txt","w")


Decide first on a reasonable data arrangement for the results.   I'd suggest 
having a map of lists, rather than the other way around.

So initialize it to having zeroes in all the right places.

results = {}
numcolumns = len(text[23].strip())
for ch in tokens:
    results[ch] = [0] * numcolumns


and

for line in  text[23:]:
    for col, ch in enumerate(line):
        if ch in tokens:
               results[ch][col] += 1


(Untested)


--

DaveA

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to