我有以下数据的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
列表,它将该文件中的每一个字!我要去哪里错在这里?
你几乎总是可以减少使用专用工具,如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]
一个回答你的问题是使用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])
试试这个,如果你真的想这样做硬盘的方式:
months = []
for line in lines[1:]:
months.append(line.split("-")[0])
lines[1:]
将跳过第一行和line.split("-")[0]
只会拉出月和附加到你的列表months
。
然而,AChampion的建议,你应该看看到csv
或pandas
包。
这应该带来想要的结果(假设在同一目录在data.csv该文件):
result = []
with open('data.csv', 'r', encoding='UTF-8') as data:
next(data)
for record in data:
result.append(record.split('-')[0])