gpt4 book ai didi

Python - 将字符串格式化为 url 的最短方法

转载 作者:太空宇宙 更新时间:2023-11-03 12:39:45 26 4
gpt4 key购买 nike

我参与了一个网络项目。我必须选择最好的方式来表示代码,以便其他人可以毫无问题/头疼/无论如何地阅读它。

我现在解决的“问题”是显示格式良好的 url(将从“标题”字符串中获取)。

所以,假设我们有一个标题,从表单中获取:

title = request.form['title'] # 'Hello World, Hello Cat! Hello?'

然后我们需要一个函数来格式化它以包含在 url 中(它需要变成 'hello_world_hello_cat_hello'),所以目前我正在使用这个我认为可读性很差的函数:

str.replace(title, ' ', '-').str.replace(title, '!', '').str.replace(title, '?', '').str.replace(string, ',' '').lower()

压缩它的好方法是什么?是否已经有一个功能可以完成我正在做的事情?

我还想知道应该从 url 中删除哪些字符/符号。

最佳答案

您可以使用 urlencode()这是 Python 中 url 编码字符串的方式。

否则,如果您想要个性化编码作为您的预期输出,而您要做的就是将单词保留在最终字符串中,您可以使用 re.findall功能来捕获他们,然后用下划线加入他们:

>>>s = 'Hello World, Hello Cat! Hello?'
>>>'_'.join(re.findall(r'\w+',s)).lower()
'hello_world_hello_cat_hello'

它的作用是:

g = re.findall(r'\w+',s) # ['Hello', 'World', 'Hello', 'Cat', 'Hello']
s1 = '_'.join(g) # 'Hello_World_Hello_Cat_Hello'
s1.lower() # 'hello_world_hello_cat_hello'

此技术也适用于字符串中的数字:

>>>s = 'Hello World, Hello Cat! H123ello? 123'
>>>'_'.join(re.findall(r'\w+',s)).lower()
'hello_world_hello_cat_h123ello_123'

我认为应该更快的另一种方法是实际替换非字母数字字符。这可以通过 re.sub 来完成通过将所有非字母数字组合在一起并用 _ 替换它们,如下所示:

>>>re.sub(r'\W+','_',s).lower()
'hello_world_hello_cat_h123ello_123'

嗯...不是真的,速度测试:

$python -mtimeit -s "import re" -s "s='Hello World, Hello Cat! Hello?'" "'_'.join(re.findall(r'\w+',s)).lower()"
100000 loops, best of 3: 5.08 usec per loop


$python -mtimeit -s "import re" -s "s='Hello World, Hello Cat! Hello?'" "re.sub(r'\W+','_',s).lower()"
100000 loops, best of 3: 6.55 usec per loop

关于Python - 将字符串格式化为 url 的最短方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23141853/

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