python - разделить строку в файле CSV с помощью разделителя - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть CSV-файл со следующими данными:

Date,Profit/Losses
Jan-10,867884
Feb-10,984655
Mar-10,322013
Apr-10,-69417
May-10,310503
Jun-10,522857
Jul-10,1033096
Aug-10,604885
Sep-10,-216386
Oct-10,477532
Nov-10,893810
Dec-10,-80353

Я импортировал файл в python так:

with open(csvpath, 'r', errors='ignore') as fileHandle:
lines = fileHandle.read()

Мне нужно перебрать эти строки так, чтобыЯ извлекаю только месяцы, т. Е. «Январь», «февраль» и т. Д., И помещаю их в другой список.Я также должен как-то пропустить первую строку, т.е. Date, Profit/Losses, которая является заголовком.

Вот код, который я написал до сих пор:

months = []
for line in lines:
    months.append(line.split("-")

Когда я пытаюсь напечатать months список, хотя, он разделяет каждый символ в файле!Где я здесь не так ?? 1014 *

Ответы [ 4 ]

0 голосов
/ 06 февраля 2019

Это должно дать желаемые результаты (при условии, что файл с именем data.csv находится в том же каталоге):

result = []

with open('data.csv', 'r', encoding='UTF-8') as data:
    next(data)
    for record in data:
        result.append(record.split('-')[0])
0 голосов
/ 06 февраля 2019

Один ответ на ваш вопрос заключается в использовании fileHandle.readlines().

lines = fileHandle.readlines()
# print(lines)
# ['Date,Profit/Losses\n', 'Jan-10,867884\n', 'Feb-10,984655\n', 'Mar-10,322013\n',
#  'Apr-10,-69417\n', 'May-10,310503\n', 'Jun-10,522857\n', 'Jul-10,1033096\n', 'Aug-10,604885\n',
#  'Sep-10,-216386\n', 'Oct-10,477532\n', 'Nov-10,893810\n', 'Dec-10,-80353\n']

for line in lines[1:]:
    # Starting from 2nd item in the list since you just want months
    months.append(line.split("-")[0])
0 голосов
/ 06 февраля 2019

Вы можете почти всегда минимизировать боль, используя специализированные инструменты, такие как модуль csv и понимание списка:

import csv
with open("yourfile.csv") as infile:
    reader = csv.reader(infile) # Create a new reader
    next(reader) # Skip the first row
    months = [row[0].split("-")[0] for row in reader]
0 голосов
/ 06 февраля 2019

Попробуйте, если вы действительно хотите сделать это трудным путем:

months = []
for line in lines[1:]:
    months.append(line.split("-")[0])

lines[1:] пропустит первый ряд, а line.split("-")[0] только вытащит месяц и добавит в ваш список months.

Однако, как предлагает AChampion, вам действительно стоит взглянуть на пакеты csv или pandas.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...