如何解决:Unicode问题通过将字符串与JSON进行比较



我正在使用天气应用程序。它将在JSON文件中提供城市列表。然后,用户可以搜索给定的城市,该应用将提供天气数据。

城市的搜索功能工作"很好"。但是正确知道用户搜索城市,我只有它的名字。为了解析天气数据,我需要城市的ID。因此,我创建了两个列表,一个是该名称,另一个用于城市的ID。选择一个城市之后,我想再次搜索城市,并记住这座城市在名单中的位置。然后,我将使用该职位来获得城市的ID。

from flask import Flask, flash, jsonify, redirect, render_template, request, session
import json
import string
app = Flask(__name__)
CITIES = []
ID = []
with open('cities_list/city.list.json') as f:
    data = json.load(f)
    for city in data['cities']:
        CITIES.append(city['name'])
        ID.append(city['id'])
@app.route('/city')
def city():
    return render_template('city.html')
@app.route('/search', methods=['GET','POST'])
def search():
    if request.method == "GET":
        # Read cities.list.json file and display cities
        cities = []
        q = request.args.get('q')
        for city in CITIES:
            if q in city:
                cities.append(city)
        return render_template('search.html', cities=cities)
    else:
        inpt = request.form.get("city")
        counter = 0
        for city in CITIES:
            counter = counter + 1
            if input in city:
                id = ID[i]
        return render_template('index.html', id=id)

运行代码时,我会收到错误消息:

if input in city:

typeerror:胁迫到unicode:需要字符串或缓冲区,hindin_function_or_method找到

我已经试图将城市变量铸成字符串。但是后来说:

if input in city:

typeerror:胁迫到unicode:需要字符串或缓冲区,hindin_function_or_method找到

很高兴为您提供任何帮助!谢谢您的支持!

inputbuiltin函数。您的变量命名为 inpt

    inpt = request.form.get("city")
    counter = 0
    for city in CITIES:
        counter = counter + 1
        if inpt in city:
            id = ID[i]
    return render_template('index.html', id=id)

注意if inpt in city vs if input in city

最新更新