没有在python中打开.csv中的单词

时间:2018-02-27 17:14:41

标签: python csv

我有一个.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

2 个答案:

答案 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