蟒蛇 - 由分隔符CSV文件分割字符串

问题描述 投票:0回答:4

我有以下数据的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列表,它将该文件中的每一个字!我要去哪里错在这里?

python file csv split
4个回答
1
投票

你几乎总是可以减少使用专用工具,如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]

1
投票

一个回答你的问题是使用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
投票

试试这个,如果你真的想这样做硬盘的方式:

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

lines[1:]将跳过第一行和line.split("-")[0]只会拉出月和附加到你的列表months

然而,AChampion的建议,你应该看看到csvpandas包。


0
投票

这应该带来想要的结果(假设在同一目录在data.csv该文件):

result = []

with open('data.csv', 'r', encoding='UTF-8') as data:
    next(data)
    for record in data:
        result.append(record.split('-')[0])
© www.soinside.com 2019 - 2024. All rights reserved.