On 6/06/2006 2:10 PM, Girish Sahani wrote: > I have a text file in the following format: > > 1,'a',2,'b' > 3,'a',5,'c' > 3,'a',6,'c' > 3,'a',7,'b' > 8,'a',7,'b'
Check out the csv module. > . > . > . > Now i need to generate 2 things by reading the file: > 1) A dictionary with the numbers as keys and the letters as values. > e.g the above would give me a dictionary like > {1:'a', 2:'b', 3:'a', 5:'c', 6:'c' ........} > 2) A list containing pairs of numbers from each line. > The above formmat would give me the list as > [[1,2],[3,5],[3,6][3,7][8,7]......] > > I wrote the following codes for both of these but the problem is that > lines returns a list like ["1,'a',2,'b'","3,'a',5,'c","3,'a',6,'c'".....] > Now due to the "" around each line,it is treated like one object > and i cannot access the elements of a line. You managed to split the file contents into lines using lines = open(filename).read().split("\n") Same principle applies to each line: |>>> lines = ["1,'a',2,'b'","3,'a',5,'c","3,'a',6,'c'"] |>>> lines[0].split(',') ['1', "'a'", '2', "'b'"] |>>> lines[1].split(',') ['3', "'a'", '5', "'c"] |>>> > > [code] > #code to generate the dictionary > def get_colocations(filename): > lines = open(filename).read().split("\n") > colocnDict = {} > i = 0 > for line in lines: > if i <= 2: > colocnDict[line[i]] = line[i+1] > i+=2 > continue > return colocnDict The return is indented too far; would return after 1st line. > [/code] > > [code] > def genPairs(filename): > lines = open(filename).read().split("\n") > pairList = [] > for line in lines: > pair = [line[0],line[2]] > pairList.append(pair) > i+=2 i is not defined. This would cause an exception. Please *always* post the code that you actually ran. > continue > return pairList dedented too far!! > [/code] > Please help :(( def get_both(filename): lines = open(filename).read().split("\n") colocnDict = {} pairList = [] for line in lines: n1, b1, n2, b2 = line.split(",") n1 = int(n1) n2 = int(n2) a1 = b1.strip("'") a2 = b2.strip("'") colocnDict[n1] = a1 colocnDict[n2] = a2 pairList.append([n1, n2]) return colocnDict, pairList def get_both_csv(filename): import csv reader = csv.reader(open(filename, "rb"), quotechar="'") colocnDict = {} pairList = [] for n1, a1, n2, a2 in reader: n1 = int(n1) n2 = int(n2) colocnDict[n1] = a1 colocnDict[n2] = a2 pairList.append([n1, n2]) return colocnDict, pairList HTH, John -- http://mail.python.org/mailman/listinfo/python-list