我有一个像这样的 url 的表
vk.com/albums54751623?z=photo54751623_341094858%2Fphotos54751623
vk.com/albums54751623
vk.com/id36375649
vk.com/id36375649
我需要找到所有 url,例如 vk.com/id36375649(仅 id) 我试试
for url in urls:
if url == re.compile('vk.com/^[a-z0-9]'):
print url
else:
continue
但这是不正确的,因为它没有返回任何东西
请您参考如下方法:
您可以使用startswith:
strs = ['vk.com/albums54751623?z=photo54751623_341094858%2Fphotos54751623',
'vk.com/albums54751623',
'vk.com/id36375649',
'vk.com/id36375649']
print([x for x in strs if x.startswith(r'vk.com/id')])
参见 IDEONE demo
更新
要解决此答案下方评论中所述的问题,您必须使用带有一些检查的正则表达式:
^vk\.com/(?!album)\w+$
参见 regex demo和一个 Python demo :
import re
strs = ['vk.com/albums54751623?z=photo54751623_341094858%2Fphotos54751623',
'vk.com/albums54751623',
'vk.com/id36375649',
'vk.com/id36375649',
'vk.com/id36375649?z=album-28413960_228518010',
'vk.com/tania_sevostianova'
]
print([x for x in strs if re.search(r'^vk\.com/(?!album)\w+$', x)])
# => ['vk.com/id36375649', 'vk.com/id36375649', 'vk.com/tania_sevostianova']
