簡體   English   中英

Python將csv數據導出到文件中

[英]Python export csv data into file

我有以下代碼,但是我無法在數據文件中修剪和存儲數據:

import nltk

tweets = [
    (['love', 'this', 'car']),
    (['this', 'view', 'amazing']),
    (['not', 'looking', 'forward', 'the', 'concert'])
    ]

def get_words_in_tweets(tweets):
    all_words = []
    for (words) in tweets:
      all_words.extend(words)
    return all_words

def get_word_features(wordlist):
    wordlist = nltk.FreqDist(wordlist)
    word_features = wordlist.keys()
    return word_features

output = open('wordFeatures.csv','w')

word_features = get_word_features(get_words_in_tweets(tweets))

print (word_features)
output.write(word_features)
#print (wordlist)
output.close()

它的作用是,它檢查單詞是雙重還是三重等,並且只在列表中添加一個單詞。 輸出如下所示:

['this', 'amazing', 'car', 'concert', 'forward', 'looking', 'love', 'not', 'the', 'view']

現在你可以看到我試圖將這些數據保存在文本文件中,但我得到了一個

TypeError: expected a character buffer object

我希望以下列格式在文本文件中使用數組中的數據:

1:this
2:amazing
3:car 
4:concert
5:forward
...

所以每個單詞的一行都有一個遞增的整數。

有人知道如何以這種方式保存我的數據?

出錯的原因是output.write接受一個字符串,而不是一個list word_features是一個list

要將列表寫入文件,您需要迭代它:

for feature in word_features: 
    output.write("{0}\n".format(feature))

我不明白你需要的格式,因為carconcert在同一條線上匯集在一起​​。 我假設這是一個錯字,你實際上需要它們在不同的行。 然后你可以這樣做以獲得該輸出:

for nfeature in enumerate(word_features):
    output.write("{0}:{1}\n".format(nfeature[0] + 1, nfeature[1]))

您正在嘗試將列表對象寫入文件,但它需要一個字符串。 你可以在這里使用`enumerate:

word_features = get_word_features(get_words_in_tweets(tweets))
with open('wordFeatures.csv', 'w') as output:
    for ind, item in enumerate(word_features, 1):
        output.write("{}:{}\n".format(ind, item))

或使用csv模塊:

import csv
word_features = get_word_features(get_words_in_tweets(tweets))
with open('wordFeatures.csv', 'w') as output:
    writer = csv.writer(output, delimiter=':')
    writer.writerows(enumerate(word_features, 1))

輸出:

1:this
2:amazing
3:car
4:concert
5:forward
6:looking
7:love
8:not
9:the
10:view

在Python中,我將數據保存到csv文件中,但是以一種相當黑客的方式:

首先,我將數據保存到文本文件中。 在每一行中,我用逗號分隔每個“列元素”。

然后,當我完成該行[當前只是文本文件中的一行]時,我寫一個新行並開始寫入下一行數據。 根據需要重復。

然后,當我完成所有操作后,我將文本文件重命名為csv文件。

對於您,添加增加的整數,您可以組成增量計數器。 如果您按照我的方式進行操作,可以遞增計數器,將值寫入文本文件,寫入逗號,寫入數據,然后寫入新行,然后重復。 只需記住在完成所有操作后將文件重命名為csv文件。

就像我說的那樣,一種黑客的做法,但無論如何。 我很樂意聽到更好的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM