遍历网址列表,并用%20替换空格

时间:2019-11-27 14:50:58

标签: python python-3.x pandas

我有一个客户给了我需要检查的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

有什么想法吗?

1 个答案:

答案 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']]