Python从CSV文件中删除自定义停用词

时间:2017-11-17 01:11:24

标签: python python-2.7 csv directory stop-words

您好我是Python编程的新手,我需要帮助从目录中的多个文件中删除自定义的停止词。我在线阅读了几乎所有相关帖子!!!!

  1. 我使用的是Python 2.7
  2. 以下是我的一个文件的两个示例行。我想保留这种格式,只需从行中删除停用词:
  3. " 8806";"示威者[在乍得]要求立法议会解散许多人因为警察驱散人群而受到伤害。&#34 ;;" 19"
  4. " 44801";"美国石油公司在伊拉克的石油换食品计划中的作用受到更严格的审查。"" 19& #34;
  5. 我在一个名为Stopwords的数据文件中有一个停用词列表。
  6. 这是我的代码:

    import io  
    import os  
    import os.path  
    import csv  
    
    os.chdir('/home/Documents/filesdirectory')
    stopwords = open('/home/StopWords.dat','r').read().split('\n')
    
    for i in os.listdir(os.getcwd()): 
        name= os.path.splitext(i)[0]    
        with open(i,"r") as fin:
             with open(name,"w") as fout:
                  writer=csv.writer(fout)
                  for w in csv.reader(fin):
                      if w not in stopwords:
                           writer.writerow(w)
    
  7. 它不会给我任何错误但会创建空文件。很感谢任何形式的帮助。

1 个答案:

答案 0 :(得分:0)

 import os
 import os.path
 os.chdir('/home/filesdirectory')
 for i in os.listdir(os.getcwd()):
    filein = open(i, 'r').readlines()
    fileout = open(i, 'w')
    stopwords= open('/home/stopwords.dat', 'r').read().split()

    for line in filein:
        linewords= line.split()
        filteredtext1 = []
        filteredtext1 = [t for t in linewords if t not in stopwords]
        filteredtext = str(filteredtext1)
        fileout.write(filteredtext + '\n')

好吧,我解决了这个问题。 此代码删除每行的停用词(或您为其提供的任何单词列表),将每行写入具有相同filenmae的文件,最后用不带停用词的新文件替换旧文件。以下是步骤:

  1. 声明工作目录
  2. 输入循环以遍历每个文件
  3. 使用readlines()
  4. 打开文件以读取和读取每一行
  5. 打开要写的文件
  6. 阅读停用词文件并拆分其文字
  7. 进入for循环以分别处理每一行
  8. 将该行拆分为单词
  9. 创建一个列表
  10. 如果行不在停用词列表中,则将该行的单词写为列表项
  11. 将列表更改为字符串
  12. 将字符串写入文件