Попытка проверить ввод пользователя в CSV-файл - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь создать скрипт, который будет принимать почтовый индекс от пользователя, а затем проверять его на соответствие 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()

1 Ответ

0 голосов
/ 12 января 2020

Вот пример сценария, который может работать для того, что вы пытаетесь сделать:

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 должно быть инициировано вне функции, в которой вы ее определяете ... вы, возможно, сделали это и просто не включили ее в свой вопрос.

...