如何将一段代码插入更大的代码?

时间:2015-12-28 11:10:58

标签: python python-3.x

我有一个包含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)

3 个答案:

答案 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)