我有一个包含1000个单词的文件和一个文件夹(该文件夹的名称是“train”),其中包含7个其他子文件夹,每个子文件夹包含8个文件。我必须检查这1000个单词是否在火车文件夹中。如果它们存在,它会在列表中附加+1,否则它应该在列表中附加-1。最后它应该产生一个包含1000或+1的向量。我写的代码产生了超过1000个元素,并且打印不会停止。这是因为我必须首先找到独特的单词并检查其中的1000个单词。但我不知道如何在我编写的代码中插入查找唯一字的代码。
提示:我从火车文件夹中提取了这1000个单词。它们是此文件夹中最常用的1000个单词。 (语言是波斯语)
import os
def c (folder_path):
t=[]
k=[]
uniqueWords = []
for folder in sorted(os.listdir(folder_path)):
folder_path1 = os.path.join(folder_path, folder)
for folder1 in sorted(os.listdir(folder_path1)):
file=os.path.join(folder_path1, folder1)
text = open(file,encoding="utf-8")
text=text.read().split()
t=text+t
with open ("c:/python34/1000CommonWords.txt", encoding="utf-8") as f1:
f1=f1.readlines()
for j in f1:
if j in uniqueWords:
k.append (+1)
else:
k.append (-1)
print (k)
查找唯一字词的代码:
for i in t:
if not i in uniqueWords:
uniqueWords.append(i)
答案 0 :(得分:2)
首先,你的问题标题和真正的问题"在评论中弹出的是完全不同的。要查找给定目录的子目录中所有文件中的所有唯一单词,您应该使用方便的os.walk method,然后打开所有文件并收集set中的单词。
import os
allwords = set()
for path, dirs, filenames in os.walk(folder_path):
print("In path {}: subdirs: {}, files: {}".format(path, dirs, filenames))
for filename in filenames:
with open(os.path.join(path, filename)) as fileobj:
for line in fileobj:
print(line)
allwords.update(line.split())
print(allwords)
答案 1 :(得分:0)
使用功能:
def unique_words(filename):
# most of the code in your first example block
return uniqueWords
uniques = unique_words('...CommonWords.txt')
for i in t:
if i not in uniques:
...
答案 2 :(得分:0)
我找到了答案。
import os
def classification (folder_path):
t=[] # opens train
k=[]
uniqueWords = []
for folder in sorted(os.listdir(folder_path)):
folder_path1 = os.path.join(folder_path, folder)
for folder1 in sorted(os.listdir(folder_path1)):
file=os.path.join(folder_path1, folder1)
text = open(file,encoding="utf-8")
text=text.read().split()
t=text+t
for i in t:
if not i in uniqueWords:
uniqueWords.append(i)
# return uniqueWords
with open ("c:/python34/1000CommonWords.txt", encoding="utf-8") as f1:
f1=f1.read().split() #extracts the vector
for j in f1:
if j in uniqueWords :
k.append (+1)
else:
k.append (-1)
print (k)