开发者

Parsing specific numeric data from csv file using python

开发者 https://www.devze.com 2022-12-30 10:51 出处:网络
Good morning. I have series of data in cvs file like below, 1,,, 1,137.1,1198,1.6 2,159,300,0.4 3,176,253,0.3

Good morning.

I have series of data in cvs file like below,

1,,,

1,137.1,1198,1.6

2,159,300,0.4

3,176,253,0.3

4,197,231,0.3

5,198,525,0.7

6,199,326,0.4

7,215,183,0.2

8,217.1,178,0.2

9,244.2,416,0.5

10,245.1,316,0.4

I want to extract s开发者_如何学编程pecific data from second column for example 217.1 and 245.1 and have them concatenated into a new file like,

8,217.1,178,0.2

10,245.1,316,0.4

I use cvs module to read my cvs file, but, I can't extract specific data as I desire. Could anyone kindly please help me. Thank you.


results = []
reader = csv.reader(open('file.csv'))
for line in reader:  # iterate over the lines in the csv
    if line[1] in ['217.1','245.1']:  # check if the 2nd element is one you're looking for
        results.append(line)    # if so, add this line the the results list

or if you want to convert to numbers, replace the last line with

        results.append([float(x) for x in line])  # append a list of floats instead of strings


Edit: Misunderstood what the question was about, sorry.

I'm not sure where the problem is, You mean row not column?

As you can see in the docs for csv module

You can easily access each row:

>>> import csv  
>>> spamReader = csv.reader(open('eggs.csv'), delimiter=',', quotechar='|')  
>>> for row in spamReader:  
...     print ', '.join(row)  
Spam, Spam, Spam, Spam, Spam, Baked Beans  
Spam, Lovely Spam, Wonderful Spam  

And (ok my python days are some years old) for the columns you could e.g just do

result += row[0] + "," + row[4]


I hope this helps:

import csv
r = csv.reader(file(r'orig.csv'))
w = csv.writer(file(r'new.csv', 'w'))
for line in r:
    if line[0] in ['8','10']: # look for the data in lines 8 and 10
        w.writerow(line)
0

精彩评论

暂无评论...
验证码 换一张
取 消