尝试根据 csv 文件检查用户输入

Trying to check user input against csv file

我正在尝试创建一个脚本,该脚本将从用户那里获取邮政编码,然后根据 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 函数之外启动正在定义它......你可能已经这样做了,只是没有把它包括在你的问题中。