>我有一个客户端给了我一个我需要检查的网址列表,但该列表包含带有空格的网址 - 例如:"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']]