如何正确修复python3中的链接列表?

如何正确修复python3中的链接列表?,python,regex,python-3.x,encoding,beautifulsoup,Python,Regex,Python 3.x,Encoding,Beautifulsoup,在使用Beauty soup的soup.findAll('a',{'link':'goto'})之后,我提取了一个链接列表,如下所示: lis_links = ['https://foo.com/019774_s009_TEV 234.xml https://foo.com/019774_s009_TEV 23.xml https://foo.com/019774_s009_TEV24.xml https://foo.com/019774_s009_TEV 120.xml https://foo

在使用Beauty soup的
soup.findAll('a',{'link':'goto'})
之后,我提取了一个链接列表,如下所示:

lis_links = ['https://foo.com/019774_s009_TEV 234.xml https://foo.com/019774_s009_TEV 23.xml https://foo.com/019774_s009_TEV24.xml https://foo.com/019774_s009_TEV 120.xml https://foo.com/WERW FOR INJ.xml']

正如您可以看到的,一些链接有“
”,如何用正确的编码(我猜是它的
%20
)修复空白?
。我试图使用
replace(“”,'%20')
,但我无法控制在何处使用它。

使用负前瞻查找所有未后跟http的空格:
\s(?!http)

Python示例

import re

def fixLinks(str):
   return re.sub(r"\s(?!http)", "%20", str)

links = ["https://foo.com/019774_s009_TEV 234.xml https://foo.com/019774_s009_TEV 23.xml https://foo.com/019774_s009_TEV24.xml https://foo.com/019774_s009_TEV 120.xml https://foo.com/WERW FOR INJ.xml"]

links[0] = fixLinks(links[0])

print links[0];

使用负前瞻查找所有未后跟http:
\s(?!http)

Python示例

import re

def fixLinks(str):
   return re.sub(r"\s(?!http)", "%20", str)

links = ["https://foo.com/019774_s009_TEV 234.xml https://foo.com/019774_s009_TEV 23.xml https://foo.com/019774_s009_TEV24.xml https://foo.com/019774_s009_TEV 120.xml https://foo.com/WERW FOR INJ.xml"]

links[0] = fixLinks(links[0])

print links[0];

您的列表中只有一项。你确定beautifulsoup是正确的吗?是的,它拉了几个链接,因为网站上的几个链接都有“go-to”这个方法应该返回一个多项目的列表,我是说,你的列表中只有一个项目。你确定beautifulsoup是正确的吗?是的,它拉了几个链接,因为网站上的几个链接都有“go-to”这个方法应该返回一个多项目的列表,这就是我所说的让我检查一下这个解决方案。。。谢谢不要忘记接受答案以帮助他人:是的,我正在检查他们。。。看来我还是有问题。。。谢谢你的帮助!不,虽然它修复了一些URL,但还有一些URL仍然存在``问题。。。等一下,让我再次检查..我得到了
TypeError:“str”对象不支持项分配
是否可以将其包装到函数中?。。。我试图:`9 10 def fix_urls2(行):-->11行[0]=re.sub(r“\s(?!http)”,“%20”,行[0])12返回行[0]`让我检查一下这个解决方案。。。谢谢不要忘记接受答案以帮助他人:是的,我正在检查他们。。。看来我还是有问题。。。谢谢你的帮助!不,虽然它修复了一些URL,但还有一些URL仍然存在``问题。。。等一下,让我再次检查..我得到了
TypeError:“str”对象不支持项分配
是否可以将其包装到函数中?。。。我试图:`9 10 def fix_urls2(行):-->11行[0]=re.sub(r“\s(?!http)”,“%20”,行[0])12返回行[0]`