【问题标题】:Fastest way of forming a list of words from a .txt file从 .txt 文件中形成单词列表的最快方法
【发布时间】:2018-06-29 05:38:57
【问题描述】:

我正在根据单词列表对在线词典进行网络抓取。以下是 .txt 文件中的单词列表的一部分:...泄露、无意、Panegyric、Draconian、Hodgepodge...

我开发了一个运行良好的代码,但是当单词列表变长时运行速度会很慢。在我的例子中,单词列表大约有 3000 个单词,代码将对每个单词进行抓取。我的代码如下:

file = open('word_list.txt', 'r') 
search_list = file.read().split(',')
file.close()

for x in tqdm(range(int(len(search_list)))):
    search = search_list[x]

    # (BeautifulSoup web scraping...)

    # (pandas organizes dataframe into .csv)
print ('Done!')

似乎第一步需要很多时间。有什么办法可以加快整个过程?

【问题讨论】:

标签: python-3.x performance list file optimization


【解决方案1】:

我可能会尝试这样的事情:

编写一个简单的程序将 search_list 转换为字典。

file = open('word_list.txt', 'r') 
search_list = file.read().split(',')
file.close()

search_dict = {}
for i in range(len(search_list)):
    search_dict[i] = search_list[i]
print(search_dict)

这应该在您的控制台上以 dict 格式打印出整个单词列表,例如 {1: a, 2: an, ...}。将此 dict 复制并粘贴到新文件或硬代码中(如果您想以这种方式维护它,而不是每次开始时都运行它)。节省内存空间,而且速度更快,因为 dicts 中的单词不会改变,并且以后可以随时更新。

for x in tqdm(range(int(len(search_dict)))):
    search = search_dict.get(x)

    # (BeautifulSoup web scraping...)

    # (pandas organizes dataframe into .csv)
print ('Done!')

所以,你得到的是一个支持随机访问的字典,而不是一个列表。我认为这应该在 O(1) 中起作用。

【讨论】:

    猜你喜欢
    • 2012-06-28
    • 1970-01-01
    • 2019-05-08
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 2012-05-28
    相关资源
    最近更新 更多