我正在使用以下函数尝试从网络抓取的 url 列表中提取标题。
我确实看过一些 SO 答案,但注意到许多人建议避免使用正则表达式解决方案。我想修复并构建我现有的解决方案,但很高兴收到其他优雅解决方案的建议。
示例 url 1:https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Rembrandt_van_Rijn_-_Self-Portrait_-_Google_Art_Project.jpg/220px-Rembrandt_van_Rijn_-_Self-Portrait_-_Google_Art_Project.jpg
示例 url 2: https: //upload.wikimedia.org/wikipedia/commons/thumb/a/ae/Rembrandt_-_Rembrandt_and_Saskia_in_the_Scene_of_the_Prodigal_Son_-_Google_Art_Project.jpg/220px-Rembrandt_-_Rembrandt_and_Saskia_in_the_Scene_of_the_Prodigal_Art_Son_Project.Google
试图从 url 中提取标题的代码(函数)。
def titleextract(url):
#return unquote(url[58:url.rindex("/",58)-8].replace('_',''))
cleanedtitle1=url[58:]
title= cleanedtitle1.strip("-_Google_Art_Project.jpg/220px-")
return title
以上对 URL 有以下影响:
网址 1:Rembrandt_- Rembrandt_and_Saskia_in_the_Scene_of_the_Prodigal_Son - Google_Art_Project.jpg/220px-Rembrandt - Rembrandt_and_Saskia_in_the_Scene_of_the_Prodigal_Son -_Google_Art_Project.jpg
网址 2:Rembrandt_van_Rijn_- Saskia_van_Uylenburgh%2C_the_Wife_of_the_Artist - Google_Art_Project.jpg/220px-Rembrandt_van_Rijn - Saskia_van_Uylenburgh%2C_the_Wife_of_the_Artist -_Google_Art_Project.jpg
然而,所需的输出是:
网址 1:伦勃朗_-_Rembrandt_and_Saskia_in_the_Scene_of_the_Prodigal_Son
网址 2: Rembrandt_van_Rijn_-_Saskia_van_Uylenburgh2C_the_Wife_of_the_Artist
我正在努力解决的是在此之后删除所有内容:_- Google_Art_Project.jpg/220px-Rembrandt - Rembrandt_and_Saskia_in_the_Scene_of_the_Prodigal_Son -_Google_Art_Project.jpg 对于每个独特的案例,然后删除不需要的字符(如果它们存在),例如 url2 中的 %。
理想情况下,我还想去掉标题中的下划线。
任何使用我现有代码的建议以及适当的逐步解释都将不胜感激。
我删除开头的尝试奏效了:
cleanedtitle1=url[58:]
但是我已经尝试了各种方法来剥离字符并删除结尾,但没有奏效:
title= cleanedtitle1.strip("-_Google_Art_Project.jpg/220px-")
根据一个建议,我也尝试过:
return unquote(url[58:url.rindex("/",58)-8].replace('_',''))
..但这并没有正确地删除不需要的文本,只是最后 8 个字符,但是由于它是可变的,所以这是行不通的。
我也试过这个,再次删除下划线 - 没有运气。
cleanedtitle1=url[58:]
cleanedtitle2= cleanedtitle1.strip("-_Google_Art_Project.jpg/220px-")
title = cleanedtitle2.strip("_")
return title
阿晨1998
POPMUISE
四季花海
相关分类