gpt4 book ai didi

python - 检索存储在 (?P\d+) 中的整数

转载 作者:太空宇宙 更新时间:2023-11-03 13:29:02 25 4
gpt4 key购买 nike

在Django的urls.py

#urls.py
url(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic')
The second part of the expression, /(?P<topic_id>\d+)/, matches an integer between two forward slashes and stores the integer value in an argument called topic_id.

我试着用正则表达式来理解它

In [6]: re.findall(r'topics/(?P<topic_id>\d+)/$', "topics/1/")
Out[6]: ['1']

然而,当我尝试

In [7]: re.findall(r'topics/(?P<topic_id>\d+)/$', "topics/1/").topic_id
AttributeError: 'list' object has no attribute 'topic_id'

topic_id 中似乎没有存储整数,怎么理解?

最佳答案

您的错误不是来自“topic_id”,而是关于 re .

如果您使用 re.findall ,它会返回所有与您的正则表达式匹配的列表。

因此在您的情况下,re.findall(r'topics/(?P<topic_id>\d+)/$', "topics/1/") 的结果将是 ['1'] .

所以,当然,['1'].topic_id引发 AttributeError。

如果你想按 'topic_id' 分组, 这样做

p = re.match(r'topics/(?P<topic_id>\d+)/$', "topics/1/")
p.group('topic_id') # it returns '1'

关于python - 检索存储在 (?P<topic_id>\d+) 中的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50275529/

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