在Python中查找.csv中的文本
在.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
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()存在,它将在一行之后停止。我犯了愚蠢的错误。学习权利的一部分!