我有一个.csv文件,其中包含当前所有纳斯达克股票的股票代码(nasdaq.csv),我想通过我自己的.csv随机代码清单(finalsheet.csv)确定它们是否是实际上是否在纳斯达克上市。
nasdaq.csv的例子(它只有几百个符号):
Symbol
GOGO
WFT
QD
S
RIOT
finalsheet.csv的例子(它只有几百个符号):
Symbol
PIH
TURN
FLWS
FCCY
SRCE
我已尝试使用此代码浏览我自己的finalsheet.csv,看看是否与nasdaq.csv匹配。
import csv
nasdaqDatabase = r'C:\Users\Sterling\Desktop\StockProject\nasdaq.csv'
with open(nasdaqDatabase, "r") as f:
with open(r'C:\Users\Sterling\Desktop\StockProject\finalsheet.csv', 'r' ) as theFile:
reader = csv.DictReader(theFile)
for line in reader:
if theFile in nasdaqDatabase:
print(line['Symbol'], 'has been located in the NASDAQ')
break
else:
print(line['Symbol'], 'is not in the NASDAQ')
break
我被困在如何继续,这是我目前的错误。如果有人建议如何以不同的方式解决这个问题,或者如何解决这个问题会很棒!
Traceback (most recent call last):
File "C:/Users/Sterling/Desktop/StockProject/learningnumbers.py", line 9, in <module>
if theFile in nasdaqDatabase:
TypeError: 'in <string>' requires string as left operand, not _io.TextIOWrapper
答案 0 :(得分:1)
您有一个基本的流问题:theFile
是您的文件句柄,是打开文件的描述符。 不表示存储在磁盘上的字符串。您需要遍历文件的字符串。
同样,nasdaqDatabase
是文件名,而不是内容。在搜索纳斯达克上市股票之前,您需要将其读入您选择的结构中。
从line
中提取符号,例如
if line['Symbol'] in nasdaqSymbols:
print(line['Symbol'], 'has been located in the NASDAQ')
这会让你感动吗?
答案 1 :(得分:1)
with open('nasdaq.csv') as nasdaq, open('finalsheet.csv') as queries:
nasdaq_txt = nasdaq.read()
is_in = [query.strip() in nasdaq_txt for query in queries]
现在is_in
是一个布尔值列表,表明finalsheet.csv
中的每一行是否都在nasdaq.csv