为什么切片只读取第一行和最后一行,跳过它们之间的行

why does the slices read only the first and last line , skipping the line between them

提问人:Claus 提问时间:11/13/2023 最后编辑:Claus 更新时间:11/13/2023 访问量:61

问:

我无法正确捕获(读取)从用户那里收到的文本 为什么无法正确读取填写表单中的数据?先谢谢你

我不明白原因,我哪里犯了错误?

text = str(settings.tg_message)
          Name : { name }
          Phone : { phone }
          Vacancy : { vacancy }


    a = text.find("{")
    b = text.find("}")
    c = text.rfind("{")
    d = text.rfind("}")
    u = text.find("{")
    p = text.rfind("}")

    part_1 = text[0:a]
    part_2 = text[b + 1:c]
    part_3 = text[d + 1:u]
    part_4 = text[p:-2]

    text_message = part_1 + tg_name + part_2 + tg_phone + part_3 + tg_vacancy + part_4

期望的结果:

Name : john
Phone : +359557664848
Vacancy : courier

输出:

Name : Jhon
Phone : { phone }
Vacancy : +359557664848courier
python django 查找 切片

评论

0赞 Julien 11/13/2023
什么?如何询问最小的可重复示例text
0赞 Daviid 11/13/2023
什至是什么text
0赞 Matthias 11/13/2023
你认为 and 包含除 和 之外的其他值吗?upad
0赞 Claus 11/13/2023
也许由于缺乏经验,我添加的信息很少.我完全添加了整个应用程序
0赞 Matthias 11/13/2023
@Claus 请向我们提供 的固定值。我们不需要所有这些 API 调用。创建一个缩小的示例。text

答:

0赞 willeM_ Van Onsem 11/13/2023 #1

主要问题是使用索引,因此在第一个和最后一个索引中搜索 和 。因此,这意味着不能使用中间的任何项目。{}

话虽如此,使用这种字符串操作将非常容易出错:即使您设法使其正常工作,它对模板更改也非常敏感:例如,如果您交换模板中变量的顺序,或省略一个,它将开始失败。

此外,你不需要这个。Django 已经有一个模板渲染引擎可供你使用。

我会将设置重写为:tg_message

Name : {{ name }}
Phone : {{ phone }}
Vacancy : {{ vacancy }}

然后我们可以让 Django 完成所有工作:

from django.template import Context, Template

template = Template(settings.tg_message)

text_message = template.render(
    Context({'name': 'John', 'phone': '+359557664848', 'vacancy': 'courier'})
)

评论

0赞 Claus 11/13/2023
你只是个天才)!!!!!!!!!!非常感谢,整个问题在 2 分钟内得到解决,感谢您的解释,现在我对 find,rfind 有了更多的了解)