gpt4 book ai didi

python - 如何使用 Python 从现有列表中重命名已抓取的文件

转载 作者:行者123 更新时间:2023-11-28 18:01:38 24 4
gpt4 key购买 nike

我正在从一个网站上抓取文件,并希望根据我计算机上现有的目录名称重命名这些文件(或者,如果更简单,包含这些目录名称的列表)。这是为了保持一致的命名约定。

例如,我已经有目录命名为:

Barone Capital Management、Gabagool Alternative Investments、Aprile Asset Management、Webistics Investments

抓取的数据由一些精确匹配、一些“模糊”匹配和一些新值组成:

Barone、Gabagool LLC、Aprile Asset Management、新名称、Webistics Investments

我希望抓取的文件采用现有目录的命名约定。例如,Barone 将成为 Barone Capital Management,而 Gabagool LLC 将更名为 Gabagool Alternative Investments

那么实现这一目标的最佳方法是什么?我查看了 fuzzywuzzy 和其他一些库,但不确定正确的路径是什么。

这是我现有的代码,它只是根据 anchor 命名文件:

import praw
import requests
from bs4 import BeautifulSoup
import urllib.request

url = 'https://old.reddit.com/r/test/comments/b71ug1/testpostr23432432/'
headers = {'User-Agent': 'Mozilla/5.0'}
page = requests.get(url, headers=headers)

soup = BeautifulSoup(page.text, 'html.parser')
table = soup.find_all('table')[0]

#letter_urls = []
for anchor in table.findAll('a'):
try:
if not anchor:
continue
fund_name = anchor.text
letter_link = anchor['href']
urllib.request.urlretrieve(letter_link, '2018 Q4 ' + fund_name + '.pdf')
except:
pass

请注意,目录列表已经创建,看起来像这样:

 - /Users/user/Dropbox/Letters/Barone Capital Management
- /Users/user/Dropbox/Letters/Aprile Asset Management
- /Users/user/Dropbox/Letters/Webistics Investments
- /Users/user/Dropbox/Letters/Gabagool Alternative Investments
- /Users/user/Dropbox/Letters/Ro Capital
- /Users/user/Dropbox/Letters/Vitoon Capital

最佳答案

Python: find closest string (from a list) to another string 中所述

您可以使用 difflib.get_close_matches ( https://docs.python.org/3/library/difflib.html#difflib.get_close_matches ) 在列表中查找最相似的字符串。您的列表将是您已有的绝对路径的文件夹:

import difflib
best_options = get_close_matches(fund_name, candidates, n=1)

if best_options:
directory = best_options[0]
else:
directory = 'New Name'

关于python - 如何使用 Python 从现有列表中重命名已抓取的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55424930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com