Python 读取CSV文件以将数据添加到字典或元组
我是Python新手。我需要重写我的选股程序,并需要帮助开始 第一个模块是主数据创建程序。它读取CSV EOD(一天结束)股票数据 文件 然后它通过主文件进行解析,将该天的股票信息添加到一个数组(由35个元素组成)中 每个数组有5列,其中包含EOD信息 原始程序以股票名称为索引。索引并不重要,因为主文件仅在第二个主库存程序中按顺序访问。需要的是,要用作主文件中(阵列)记录的头的股票名称 需要的是一种打开和读取CSV文件的方法。如果stka==stkb,则比较每个股票名称Python 读取CSV文件以将数据添加到字典或元组,python,arrays,file,Python,Arrays,File,我是Python新手。我需要重写我的选股程序,并需要帮助开始 第一个模块是主数据创建程序。它读取CSV EOD(一天结束)股票数据 文件 然后它通过主文件进行解析,将该天的股票信息添加到一个数组(由35个元素组成)中 每个数组有5列,其中包含EOD信息 原始程序以股票名称为索引。索引并不重要,因为主文件仅在第二个主库存程序中按顺序访问。需要的是,要用作主文件中(阵列)记录的头的股票名称 需要的是一种打开和读取CSV文件的方法。如果stka==stkb,则比较每个股票名称,更新main.idx中的
,更新main.idx
中的信息
伪代码:
Open-rcvs
开放式rwb干管
While(cvs)
读线(CVS)
读线(主)
如果cvs==main
添加到记录中
赖特(主)
其他的
如果cvs>main
读线(主)
其他的
如果cvs
下面是一些处理CSV程序的代码和我的尝试,可以在下找到
我的需求更简单,因为我只需要读取CSV文件。主文件可以在任何Python数据集中列表
,字典
,或元组
谢谢你帮我指明了正确的方向 您不太清楚正在使用的文件格式,或者在读入记录后需要对其执行什么操作。但是从中获取一些文件格式,我将给您一个示例程序
这是一个主文件m.csv.txt
。这是一个逗号分隔值(CSV)文件,第一个字段是标识符
AAC,D,20111207,9.83,9.83,9.83,9.83,100
AACC,D,20111207,3.46,3.47,3.4,3.4,13400
AACOW,D,20111207,0.3,0.3,0.3,0.3,500
AAME,D,20111207,1.99,1.99,1.95,1.99,8600
AAON,D,20111207,21.62,21.9,21.32,21.49,93200
AAPL,D,20111207,389.93,390.94,386.76,389.09,10892800
这里有一个每日更新文件d.csv.txt
。它有相同的格式。同样,第一个字段是标识符。如果标识符与主文件中的标识符相同,则应合并这些条目。否则,每日文件中的新标识符将添加到整个列表中
AACC,D,20120127,4.01,4.02,4.03,4.04,40000
B,D,20120127,4.01,4.02,4.03,4.04,40000
下面是一个简单的程序,可以使用读取主文件,并将每行的条目放入字典stocks
。第一个字段用作字典的键。这是一个非常简单的数据结构,但是您说过主文件可以是任何数据格式。然后我们打印出stocks
字典
import csv
mainReader = csv.DictReader( open("m.csv.txt","rb"), ["id"],"others")
newReader = csv.DictReader( open("d.csv.txt","rb"), ["id"],"others")
stocks = {}
for line in mainReader:
stocks[line['id']] = line
print stocks # output hand-formatted
{
'AAC': {'id':'AAC',
'others': ['D','20111207','9.83','9.83','9.83','9.83','100']},
'AACC': {'id':'AACC',
'others': ['D', '20111207', '3.46', '3.47', '3.4', '3.4', '13400']},
'AAME': {'id': 'AAME',
'others': ['D', '20111207', '1.99', '1.99', '1.95', '1.99', '8600']},
'AACOW': {'id': 'AACOW',
'others': ['D', '20111207', '0.3', '0.3', '0.3', '0.3', '500']},
'AAPL': {'id': 'AAPL', 'others':
['D','20111207','389.93','390.94','386.76','389.09','10892800']},
'AAON': {'id': 'AAON',
'others': ['D', '20111207', '21.62', '21.9', '21.32', '21.49', '93200']}
}
现在程序继续读取每日更新文件,再次使用csv模块。如果条目与主文件中的条目具有相同的标识符,您不清楚它们应该如何组合。对于本例,我将让每日文件中的条目完全替换现有条目。我们打印出结果股票
for line in newReader:
# can use if line['id'] in stocks: to check for an existing record if desired
# in this example, we blindly overwrite any existing entry
stocks[line['id']] = line
print stocks # output hand-formatted
{
'AAME': {'id': 'AAME',
'others': ['D', '20111207', '1.99', '1.99', '1.95', '1.99', '8600']},
'B': {'id': 'B',
'others': ['D', '20120127', '4.01', '4.02', '4.03', '4.04', '40000']},
'AACC': {'id': 'AACC',
'others': ['D', '20120127', '4.01', '4.02', '4.03', '4.04', '40000']},
'AAPL': {'id': 'AAPL',
'others': ['D','20111207','389.93','390.94','386.76','389.09','10892800']},
'AAON': {'id': 'AAON',
'others': ['D', '20111207', '21.62', '21.9', '21.32', '21.49', '93200']},
'AACOW': {'id': 'AACOW',
'others': ['D', '20111207', '0.3', '0.3', '0.3', '0.3', '500']}
}
请注意,字典数据结构在打印时没有任何特定的顺序。您想要排序输出吗?使用字典的items()
方法获取列表,并使用.sort()
对列表进行排序。(还有许多其他方法可以做到这一点。)
是否要写出更新的主文件。使用csv.DictWriter()
或csv.writer()
。您可以逐行执行此操作,也可以一次输出一个完整的内存列表,如股票
。从您发布的代码中不太清楚您想要什么,但您应该查看Python的csv模块。您尝试执行的操作应该非常简单,但从您的描述中并不完全清楚。如果你有一些可能有用的示例数据。我有点强迫症和吹毛求疵,但它的拼写是tuple
,而不是tupol
。
for line in newReader:
# can use if line['id'] in stocks: to check for an existing record if desired
# in this example, we blindly overwrite any existing entry
stocks[line['id']] = line
print stocks # output hand-formatted
{
'AAME': {'id': 'AAME',
'others': ['D', '20111207', '1.99', '1.99', '1.95', '1.99', '8600']},
'B': {'id': 'B',
'others': ['D', '20120127', '4.01', '4.02', '4.03', '4.04', '40000']},
'AACC': {'id': 'AACC',
'others': ['D', '20120127', '4.01', '4.02', '4.03', '4.04', '40000']},
'AAPL': {'id': 'AAPL',
'others': ['D','20111207','389.93','390.94','386.76','389.09','10892800']},
'AAON': {'id': 'AAON',
'others': ['D', '20111207', '21.62', '21.9', '21.32', '21.49', '93200']},
'AACOW': {'id': 'AACOW',
'others': ['D', '20111207', '0.3', '0.3', '0.3', '0.3', '500']}
}
s = stocks.items()
s.sort()
print s # output hand-formatted
[
'AACC': {'id': 'AACC',
'others': ['D', '20120127', '4.01', '4.02', '4.03', '4.04', '40000']},
'AACOW': {'id': 'AACOW',
'others': ['D', '20111207', '0.3', '0.3', '0.3', '0.3', '500']},
'AAME': {'id': 'AAME',
'others': ['D', '20111207', '1.99', '1.99', '1.95', '1.99', '8600']},
'AAON': {'id': 'AAON',
'others': ['D', '20111207', '21.62', '21.9', '21.32', '21.49', '93200']},
'AAPL': {'id': 'AAPL',
'others': ['D','20111207','389.93','390.94','386.76','389.09','10892800']},
'B': {'id': 'B',
'others': ['D', '20120127', '4.01', '4.02', '4.03', '4.04', '40000']}
]