![](/img/trans.png)
[英]How can i multiply each element in a python list with element in another list?
[英]How can I create a new list with each element a regular expression of each element of another list in python?
我一直在玩一些不同的语法,但似乎没有任何工作,我得到语法错误“TypeError:'str'对象不支持项目分配”和一些othes
for url in urls:
for i in range(len(urls)):
filename[i] = [re.search(r'/([.]+)(.pdf)') for url[i] in urls]
我也尝试过:
for url in urls:
filename[i] = [re.search(r'/([.]+)(.pdf)') for url[i] in urls for i in range(len(urls))]
还有一些其他的排列。 我一直在想列表理解是最好的方法,但是我不确定我需要使用的语法。 有什么帮助吗?
你是在正确的轨道上有一个列表理解,但你正在使它比它更复杂:
[re.search(r'/([.]+)(.pdf)', url) for url in urls]
请注意,这将是匹配列表,如果您需要,例如,它找到的组,忽略它不匹配的任何URL,您可以这样做:
[match.groups() for match in (re.search(r'/([.]+)(.pdf)', url) for url in urls) if match]
它使用嵌套的生成器表达式来检查是否已进行匹配,如果匹配,则从中提取组:
>>> urls = ["http://wwww.example.com/test.html", "http://www.example.com/test.pdf"]
>>> [match.groups() for match in (re.search(r'/([^/]+)(.pdf)', url) for url in urls) if match]
[('test', '.pdf')]
在这里,我对你的正则表达式进行了一些编辑,使其适用于我的示例,这只是为了示例而已。
当然,你可以在这里用匹配对象做任何你想做的事情,而不仅仅是获得match.groups()
。
使用列表推导,我创建了一个url列表,如果url regex结果与模式匹配,则只会将其插入到新列表中
file_regex = re.compile(r'/([a-zA-Z0-9]+)(.pdf)')
filenames = [file_regex.search(url) for url in urls if file_regex.match(url)]
print filenames
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.