python-3.x - 尝试根据 csv 文件检查用户输入
问题描述
我正在尝试创建一个脚本,该脚本将从用户那里获取邮政编码,然后将其与 csv 文件进行检查以验证它是否是真实的邮政编码。然后我使用 robobrowser 从网上提取一些天气数据。我无法将用户输入与我的 csv 文件进行比较。我已经尝试了一些我在这里看到的不同的东西,但似乎无法弄清楚。如果邮政编码正确,则应将其传递,否则应再次要求用户输入邮政编码。无论如何,我正在寻找针对 csv 文件检查输入。这可能是一个简单的解决方法,我似乎无法弄清楚。csv 文件有一堆列,但我只想处理第一个称为 zip 的列。提前致谢!
from robobrowser import RoboBrowser
import csv
def location():
global zipcode
zipcode = input('Please enter your five digit zip code:\n')
with open(r'C:\Users\Josh\PycharmProjects\Scripting_fund\zip.csv') as zipcodefile:
reader = csv.DictReader(zipcodefile)
for row in reader:
if row['zip'] == zipcode :
lookup()
else:
location()
解决方案
这是一个示例脚本,可能适用于您正在尝试做的事情:
import csv
ZIPCODES = []
def valid(zipcode):
return zipcode in ZIPCODES
def location():
while True:
zipcode = input('Please enter your five digit zip code:\n')
if valid(zipcode):
return zipcode
else:
print("That's not a valid zipcode.")
continue
if __name__ == '__main__':
with open(r'C:\Users\Josh\PycharmProjects\Scripting_fund\zip.csv') as zipcodefile:
reader = csv.DictReader(zipcodefile)
ZIPCODES = [row['zip'] for row in reader]
user_zipcode = location()
通常最好避免使用该global
语句,但如果您确实使用它,则需要在定义它的函数之外zipcode
启动......您可能已经这样做了,只是没有将其包含在您的问题中。
推荐阅读
- javascript - 如何以 100% 全宽嵌入 YouTube iframe 视频
- excel - 当我尝试打开宏时 Excel 关闭
- php - 如何使用 php 进行多选选项?
- scala - 播放框架返回 404,带有 play.http.context 和斜杠
- python - 用线连接抖动的数据点 - seaborn python
- reactjs - 如何使用屏蔽输入添加 antd datepicker
- java - `Thread.checkAccess()` 是 `Thread.suspend()` 的合适替代品吗?
- c# - 尝试添加浏览图片时弹出错误消息但代码正确
- wordpress - 同一个 Docker 容器上的多个域
- c# - 在 C# 上需要某种无穷无尽的泛型类型方法