[英]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))
我不明白你需要的格式,因為car
和concert
在同一條線上匯集在一起。 我假設這是一個錯字,你實際上需要它們在不同的行。 然后你可以這樣做以獲得該輸出:
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.