gpt4 book ai didi

python - 为什么 str.split() 不适用于 fastapi str 类型?

转载 作者:行者123 更新时间:2023-12-04 10:59:46 25 4
gpt4 key购买 nike

出于某种原因, str.split() 在 python 的 fastapi 包中没有按预期运行。

为简化起见,我已经包含了 FastAPI 的一个简单用例,但 str.split() 似乎只删除了我打算拆分的字符,而不是返回一个列表,我可以通过它们的索引访问单个项目。高度简化的可重现代码:

### fastapi example
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
return {"Hello": "World"}

@app.get("/alignment/{item_id}")
def read_item(item_id: str, q: str):
my_list = q.split("+") ### the critical line in question
return {"people" : my_list[0]}

我使用 uvicorn 运行此代码:
>>> uvicorn main:app --reload

通过在 Firefox 中浏览到
http://127.0.0.1:8000/alignment/abc123ABC123?q=abracadabra+django+musical

我的输出是:
{"people":"abracadabra django musical"}

但是,我希望输出是:
{"people" : "abracadabra"}

为了确保我没有发疯,我在 fastApi 之外使用了 str.split() ,以显示预期结果是一个列表,我可以在其中通过索引单独访问每个访问的项目,如下所示:
### str.split example
q = "abracadabra+django+musical"
my_list = q.split("+")
a = my_list[0]
print(a)

>>> abracadabra # Actual result as expected

我有一些假设,但都没有产生结果:
  • 在 fastapi 类中为 read_item 声明的 str 类型没有相同的 .split() 函数,有没有办法默认为 python 的基本 str.split() 函数?
  • 也许这是一个编码问题,但默认情况下 URL 和 python 都是 ASCII,所以这似乎不是错误
  • 也许“+”需要一个转义字符(就像在大多数 REGEX 情况下一样),但在 ### str.split example 中(上图)它没有任何\或\,所以我认为没有必要。

  • 任何将此字符串分隔成碎片的帮助都会非常有帮助。之后,我打算处理字符串列表,并返回一个比第一个元素更复杂的 json,但这似乎是我的主要障碍。

    最佳答案

    如果您替换 split("+"),我相信您的代码会起作用与 split(" ") . +查询字符串中的字符表示 space当 url 编码时; FastAPI 将在传递给 View 函数之前对查询字符串进行 url 解码。

    关于python - 为什么 str.split() 不适用于 fastapi str 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58895328/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com