我不知道任何python,但我需要自定义一个脚本。
在脚本中解析了字符串并将其放入列表中(我猜)。
然后根据它们是否以“http”开头来过滤这些字符串。我想要添加的是基于文件扩展名的过滤器。所有以html
或xml
结尾的链接都将被过滤。
这是过滤所有超链接的代码:
links = filter (lambda x:x.startswith("http://") , links)
我不知道为.endswith(".html) OR .endswith("xml")
我知道这会过滤所有以.html
结尾的链接,但我还需要.xml
个链接。
links = filter (lambda x:x.startswith("http://") , links)
links = filter (lambda x:x.endswith(".html") , links)
提前致谢!!
答案 0 :(得分:4)
如果你至少有2.5,你可以将一个后缀元组传递给endswith
。感谢@hcwhsa指出:
links = filter(lambda x:x.endswith((".html", ".xml")), links)
如果您使用的是早期版本,则可以使用or
运算符:
links = filter(lambda x:x.endswith(".html") or x.endswith(".xml"), links)
如果你不确定它已经小写了,你会想要小写x。
我可能会使用生成器表达式而不是filter
执行此操作,当然不会连续调用filter
:
links = [link for link in links if link.startswith('http://') and link.endswith(('.html', '.xml'))]
答案 1 :(得分:0)
我认为最好用regex检查这个
>>> import re
>>> c = r"^http://.+\.(html|xml)"
>>> re.match(c, 'hello')
>>> re.match(c, 'http://data.com/word.html')
<_sre.SRE_Match object at 0x1d2a100>
答案是
import re
regex = r"^http://.+\.(html|xml)"
links = filter(lambda x: re.match(regex, x), links)