我有一个包含以下数据的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()我需要遍历这些行,以便仅提取月份,即"Jan“、"Feb”等,并将其放在不同的列表中。我还必须以某种方式跳过第一行,即Date, Profit/Losses,它是标题。
这是我到目前为止写的代码:
months = []
for line in lines:
months.append(line.split("-")但是,当我尝试打印months列表时,它会拆分文件中的每个字符!!我哪里错了?
发布于 2019-02-06 12:08:21
您几乎总是可以通过使用专门的工具来最小化痛苦,例如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]发布于 2019-02-06 12:05:59
您的问题的一个答案是使用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])发布于 2019-02-06 12:00:32
如果你真的想用一种很难的方式来做这件事,那就试试这个:
months = []
for line in lines[1:]:
months.append(line.split("-")[0])lines[1:]将跳过第一行,而line.split("-")[0]将只提取月份并附加到您的列表months中。
但是,正如AChampion所建议的,您应该真正研究一下csv或pandas包。
https://stackoverflow.com/questions/54546368
复制相似问题