首页 > 解决方案 > 如何将标记化的句子作为行附加到csv

问题描述

我正在尝试从路径中对几个 .txt 文件进行句子标记化,然后将每个标记化的句子附加到 *.txt 文档 ID 为 csv 的新行中。

路径(work_dir)中有几个*txt文件在下面的例子中,第一列需要是文件名(WLTW_5_2016_02_29),下一列是tokenized句子。这样,如果文档中有 40 个句子,我希望第一列和第二列句子中有 40 行具有相同文件名。我还附上了一张图片来显示 csv 输出是如何预期的。

import nltk
work_dir='/content/drive/My Drive/deneme'
filename = 'WLTW_5_2016_02_29.txt'
file = open(filename, 'rt')
text = file.read()
#file.close()
# split into sentences
from nltk import sent_tokenize
sentences = sent_tokenize(text)
print(sentences)
import csv

with open('writeData.csv', mode='w') as file:
    writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    writer.writerow(("filename", "sentence"))
    writer.writerow((filename, sentences))

我尝试了这种方法,但我无法管理它。这里

在此处输入图像描述

使用上面的代码,它将所有内容写入同一行。但是,如上面的示例所示,我想通过附加为行将它们写入同一列。

标签: pythoncsvnlpnltktokenize

解决方案


我认为我的问题在于代码的顺序:

这是工作的一个,如果有人有同样的问题,请随意使用它:

import nltk, glob, csv
from nltk import sent_tokenize
files = glob.glob("/content/drive/My Drive/deneme/*.txt")

with open('writeData.csv', mode='w') as new_file:
  writer = csv.writer(new_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
  for filename in files:

    # Take all sentences from a given file
    file = open(filename, 'rt')
    text = file.read()
    file.close()
 
    sentences = sent_tokenize(text)
    print(sentences)

    for sentence in sentences:
      writer.writerow((filename, sentence))

推荐阅读