我有一个客户给了我需要检查的URL列表,但是该列表包含带空格的URL-例如:“ 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
有什么想法吗?
答案 0 :(得分:1)
使用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']]