在Python中查找.csv中的文本

在Python中查找.csv中的文本,python,csv,search,Python,Csv,Search,在.csv文档中,我有以下行: AAPL,"Apple Inc.","163.03","$827.22B","1980","Technology","Computer Manufacturing","https://www.nasdaq.com/symbol/aapl", 在开始我的程序后,它会提示用户输入.csv文件路径以及要搜索的股票代码。在本例中,我正在搜索AAPL import csv from tkinter import import tkinter.simpledialog r

在.csv文档中,我有以下行:

AAPL,"Apple Inc.","163.03","$827.22B","1980","Technology","Computer Manufacturing","https://www.nasdaq.com/symbol/aapl",
在开始我的程序后,它会提示用户输入.csv文件路径以及要搜索的股票代码。在本例中,我正在搜索AAPL

import csv
from tkinter import
import tkinter.simpledialog

root = Tk()
w = Label(root, text="Stock locator")
w.pack()

nasdaqDatabase = tkinter.simpledialog.askstring("NASDAQ Database", "Please input your NASDAQ database csv directory") 
webUrlTest = tkinter.simpledialog.askstring("Stock Ticker Input", "Input a stock ticker") 

with open(nasdaqDatabase, "r") as f:
    csvreader = csv.reader(f, delimiter=",")
    for row in csvreader:
        if webUrlTest in row[0]:
            print(webUrlTest + ' has been located in the NASDAQ')
        else:
            print('not found')
            quit()
运行代码搜索AAPL时的输出如下所示:

not found

Process finished with exit code 0
为什么它不返回已找到的AAPL?在这个例子中,我错在哪里?谢谢你的帮助

for row in csvreader:
    if webUrlTest in row[0]:
        print(webUrlTest + ' has been located in the NASDAQ')
    else:
        print('not found')
        quit()
这将检查第一行,如果它不是您要查找的内容,则退出。你肯定想要更像这样的东西:

found = False
for row in csvreader:
    if webUrlTest in row[0]:
        print(webUrlTest + ' has been located in the NASDAQ')
        found = True
if not found:
    print('not found')
    quit()
您还可以将其包装到函数中,以避免出现稍微笨拙的
found
标志;)

这将检查第一行,如果它不是您要查找的内容,则退出。你肯定想要更像这样的东西:

found = False
for row in csvreader:
    if webUrlTest in row[0]:
        print(webUrlTest + ' has been located in the NASDAQ')
        found = True
if not found:
    print('not found')
    quit()

您还可以将其包装到函数中,以避免出现稍微笨拙的
found
标志;)

如果任何行不是AAPL,则代码将退出。您打算用
else
语句表达的是

for row in csvreader:
    if webUrlTest in row[0]:
        print(webUrlTest + ' has been located in the NASDAQ')
        break
else:
    print('not found')
有些人强烈反对。。。else语句。他们会建议采用这种方法

found = False
for row in csvreader:
    if webUrlTest in row[0]:
        print(webUrlTest + ' has been located in the NASDAQ')
        found = True
        break
if not found:
    print('not found')

为了自己捕获此类错误,我强烈建议使用python调试器,这样您就可以单步执行并观察执行情况。大多数IDE(如PyCharm)都有一个具有良好接口的调试器。您可以搜索有关如何使用调试器的教程。

如果任何行不是AAPL,则代码将退出。您打算用
else
语句表达的是

for row in csvreader:
    if webUrlTest in row[0]:
        print(webUrlTest + ' has been located in the NASDAQ')
        break
else:
    print('not found')
有些人强烈反对。。。else语句。他们会建议采用这种方法

found = False
for row in csvreader:
    if webUrlTest in row[0]:
        print(webUrlTest + ' has been located in the NASDAQ')
        found = True
        break
if not found:
    print('not found')

为了自己捕获此类错误,我强烈建议使用python调试器,这样您就可以单步执行并观察执行情况。大多数IDE(如PyCharm)都有一个具有良好接口的调试器。您可以搜索有关如何使用调试器的教程。

AAPL是您的第一个股票行情器吗?如果不是,您将阅读第一行,然后退出。如果是,您确定
webUrlTest
AAPL
?@skam我要搜索的行在第201行的A列中。它位于.csvIs AAPL上的一个列表中,你的第一个股票行情?如果不是,您将阅读第一行,然后退出。如果是,您确定
webUrlTest
AAPL
?@skam我要搜索的行在第201行的A列中。它位于.csv上的一个列表的深处。这是输出found=false name错误:name'false没有定义道歉,忘记了Python使用
false
/
True
而不是
false
/
True
工作得很好。谢谢没有意识到由于我的quit()存在,它将在一行之后停止。我犯了愚蠢的错误。学习权利的一部分!这是输出found=false name错误:name'false没有定义道歉,忘记了Python使用
false
/
True
而不是
false
/
True
工作得很好。谢谢没有意识到由于我的quit()存在,它将在一行之后停止。我犯了愚蠢的错误。学习权利的一部分!