Разбор конкретных числовых данных из CSV-файла с использованием Python - PullRequest
1 голос
/ 14 мая 2010

Доброе утро.

У меня есть ряд данных в файле cvs, как показано ниже,

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

Я хочу извлечь конкретные данные из второго столбца, например, 217.1 и 245.1, и объединить их в новый файл, например,

8,217.1,178,0.2

10,245.1,316,0.4

Я использую модуль cvs для чтения моего файла cvs, но я не могу извлечь конкретные данные по своему желанию. Может ли кто-нибудь любезно, пожалуйста, помогите мне. Спасибо.

Ответы [ 3 ]

2 голосов
/ 14 мая 2010
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

или, если вы хотите преобразовать в числа, замените последнюю строку на

        results.append([float(x) for x in line])  # append a list of floats instead of strings
0 голосов
/ 14 мая 2010

Надеюсь, это поможет:

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 голосов
/ 14 мая 2010

Редактировать: неправильно понял, о чем был вопрос, извините.

Я не уверен, где проблема, Вы имеете в виду строку, а не столбец?

Как вы можете видеть в документах для csv модуля

Вы можете легко получить доступ к каждой строке:

>>> 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  

И (хорошо, моим дням питона уже несколько лет) для столбцов, которые вы могли бы, например, сделать

result += row[0] + "," + row[4]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...