循环访问 url 列表并将空格替换为 %20



>我有一个客户端给了我一个我需要检查的网址列表,但该列表包含带有空格的网址 - 例如:"https://exdomain.com/dir/this 只是%20a%20text.html">

我需要遍历此列表并替换 %20 的所有空格。 我知道这是使用的最佳实践 - 而不是 %20,但这是将来要解决的问题。

到目前为止,我所做的是:

import pandas as pd
df = pd.DataFrame(columns = ['urls_with_spaces', 'urls_with_%20'])
df['urls_with_spaces'] = 
['https://exdomain.com/dir/this is just%20a%20text.jpg', 
'https://exdomain.com/dir/this is just%20a%20text2.jpg', 
'https://subdomain.exdomain.com/dir/this is just%20a%20text3.jpg']
df['urls_with_%20'] = [x.replace(' ', '%20') for x in data['urls_with_%20']]

现在,问题是有些 url 有换行符,所以我可以替换 %20 的空格,但由于这个换行符,我在执行此操作后无法访问 url。

我得到的一个例子:

"https://subdomain.exdomain.com/content/x/ex/region/subregion/something/this
Is%20an%20example/x2/w-program/get-out.jpg

有什么想法吗?

> 使用re.sub匹配所有空格,而不仅仅是空格与s

import re
...
df['urls_with_%20'] = [re.sub(r's+', '%20', x) for x in data['urls_with_spaces']]

或者,您可以尝试使用urlib.parse.quote,但我不确定在您的情况下它将如何处理断行:

from urlib.parse import quote
...
df['urls_with_%20'] = [quote(x) for x in data['urls_with_spaces']]

最新更新