首页 > 解决方案 > Python 只在新的 csv 文件中写入最后一行

问题描述

我只有最后一行写在一个新的 csv 文件中。

f = open(r'dataset.csv', encoding="utf8")
data = f.readlines()

tagged_list = []

for line in data:
    tokens = nltk.word_tokenize(line)
    tagged = nltk.pos_tag(tokens)
    adj = [word for word,pos in tagged \
            if (pos == 'JJ' or pos == 'JJR' or pos == 'JJS')]
    downcased = [x.lower() for x in adj]
    joined = " ".join(downcased).encode('utf-8')
    into_string = str(adj)

output = open("out.csv", "wb")
output.write(joined)
output.close()

当我更改 output = open("out.csv", "a")output = open("out.csv", "r")出现错误时

Traceback (most recent call last):
  File "nl.py", line 21, in <module>
    output.write(joined)
TypeError: write() argument must be str, not bytes

我怎样才能让它一个接一个地写下所有的行,而不仅仅是最后一行。

标签: pythoncsv

解决方案


打开这两个文件,并在生成它们时编写这些行(未经测试):

with open('dataset.csv', encoding='utf8') as data:
    with open('out.csv','w',encoding='utf8') as output:
        for line in data:
            tokens = nltk.word_tokenize(line)
            tagged = nltk.pos_tag(tokens)
            adj = [word for word,pos in tagged
                   if (pos == 'JJ' or pos == 'JJR' or pos == 'JJS')]
            downcased = [x.lower() for x in adj]
            joined = " ".join(downcased) + '\n'
            output.write(joined)

推荐阅读