我已经定义了一个函数,该函数从我指定的字母开始搜索所有 5 个字母的单词的字符串,然后使用处理过的列表创建一个文本文件。
我目前必须为每个字母手动运行程序,如何更改我的代码,以便该函数将一个接一个地搜索字母表中的所有字母,并为每个结果创建一个单独的文本文件?
import re
from pathlib import Path
# define starting letter of word search
ltr = 'm'
# define RegEx pattern to find all 5-letter words starting with a
certain letter
pattern = r'\b'+ltr+r'\w{4}\b'
# define Function WordSearch: search wordlist.txt with defined RegEx
Pattern
def WordSearch():
# set Path to Main Text file
file = r'C:\Users\User1\OneDrive\Documents\wordlist.txt'
# open Main Text file and set variable 'MainText' equal to contents
fileToOpen = Path(file)
f = open(fileToOpen)
MainText = f.read()
# search all words in Main Text and make list of those that fit the
# RegEx pattern defined above
slist = re.findall(pattern,MainText)
# make set from list to eliminate duplicate entries
slist_nd = list(set(slist))
# turn Set into a string
sliststr = ' '.join(slist_nd)
# open new txt file, write string into contents
slist_file = open(r"C:\Users\User1\OneDrive\Documents\fivelist"+ltr+".txt", "w")
slist_file.write(sliststr)
# close files
f.close()
slist_file.close()
WordSearch()
给你.
import string
letters = string.ascii_lowercase
那你就可以了
for ltr in letters:
pattern = r'\b'+ltr+r'\w{4}\b'
请注意,您必须缩进所有转发代码才能在 for 循环中。
使用列表和循环列表。为你的函数使用变量。在循环中调用函数。
import string
import re
from pathlib import Path
def WordSearch(pattern, ltr):
# set Path to Main Text file
file = r'C:\Users\User1\OneDrive\Documents\wordlist.txt'
# open Main Text file and set variable 'MainText' equal to contents
fileToOpen = Path(file)
f = open(fileToOpen)
MainText = f.read()
# search all words in Main Text and make list of those that fit the
# RegEx pattern defined above
slist = re.findall(pattern,MainText)
# make set from list to eliminate duplicate entries
slist_nd = list(set(slist))
# turn Set into a string
sliststr = ' '.join(slist_nd)
# open new txt file, write string into contents
slist_file = open(r"C:\Users\User1\OneDrive\Documents\fivelist"+ltr+".txt", "w")
slist_file.write(sliststr)
# close files
f.close()
slist_file.close()
alphabet = list(string.ascii_lowercase)
for x in alphabet:
pattern = r'\b'+x+r'\w{4}\b'
WordSearch(pattern, x)
你也可以研究线程。并在它自己的线程中启动每个函数。这样你就不必等待第一个完成下一个开始。
from threading import Thread
那就像这样.
threads = []
alphabet = list(string.ascii_lowercase)
for x in alphabet:
pattern = r'\b'+x+r'\w{4}\b'
t = Thread(target=WordSearch, args=(pattern, x))
threads.append(t)
for x in threads:
x.start()
for x in threads:
x.join()
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(39条)