[英]How to write csv of list of dictionaries with python
print(test[0].keys())
keys = test[0].keys()
with open('work.csv', 'w') as output_file:
dict_writer = csv.DictWriter(output_file, keys)
dict_writer.writeheader()
dict_writer.writerows(test)
def get_user_category(user_polarity, followers_polarity, following_polarity):
if user_polarity and followers_polarity == following_polarity:
return following_polarity
elif user_polarity and following_polarity == followers_polarity:
return followers_polarity
elif followers_polarity and following_polarity == user_polarity:
return user_polarity
def get_users_tweet(username):
user_tweet = user_csv[user_csv["user"] == username]["tweets"]
user_tweet = list(user_tweet)
return user_tweet
def convertDictToCSV(dictionary):
w = csv.writer(open("output.csv", "w"))
for key, val in dictionary.items():
w.writerow([key,val])
return "Written to csv"
def get_maximum_class(username):
l = []
w = {}
for x in user_csv[user_csv["user"] == username ]["labels"]:
l.append(x)
for z in set(l):
w[z] = l.count(z)
return max(w)
def get_maximum_class_for_followers(username):
l = []
w = {}
for x in followers_csv[followers_csv["user"] == username ]["labels"]:
l.append(x)
for z in set(l):
w[z] = l.count(z)
return max(w)
def get_maximum_class_for_followed_users(username):
l = []
w = {}
for x in follow_csv[follow_csv["follows"] == username ]["labels"]:
l.append(x)
for z in set(l):
w[z] = l.count(z)
return max(w)
def get_followers_and_class_max(user):多數= [] user_followers =設置(followers_csv [followers_csv [“ follows”] == user] [“ user”])user_followers_class = set(followers_csv [followers_csv [“ = user]標簽“]”)用於user_followers中的每個用戶:多數。附加(get_maximum_class_for_followers(每個用戶))返回max(多數)
def get_follow_follow_max(user):
majority = []
users_followed = set(follow_csv[follow_csv["user"] == user]["follows"])
users_followed_class = set(follow_csv[follow_csv["user"] == user]["follows"])
for each_user in users_followed:
majority.append(get_maximum_class_for_followed_users(each_user))
return max(majority)
測試= []對set(user_csv [“ user”])中的每個用戶:嘗試:followers_polarity = get_followers_and_class_max(each_user)except(ValueError):followers_polarity = 0
user_category = get_user_category(get_maximum_class(each_user), followers_polarity, following_polarity)
users_tweet = get_users_tweet(each_user)
data = {"User:": each_user, "Polarity: ": get_maximum_class(each_user), "Following Polarity: ": following_polarity, "Followers Polarity: ": followers_polarity, "Users Category: ": user_category }
test.append(data)
new_file =StringIO(newline='')
#print(test[0].keys())
keys = test[0].keys()
with open('work.csv', 'w') as output_file:
dict_writer = csv.DictWriter(output_file, keys)
dict_writer.writeheader()
dict_writer.writerows(test)
with open('work3','w',newline='') as f_out:
f_out.write(output_file.getvalue())
我想用新字段創建一個新的csv文件。 分類顯示在終端上,但未創建新的csv文件。
您可以使用StringIO
類( 此處為docs )寫入內存(不創建任何文件),然后寫入終端。 本示例將CSV數據寫入StringIO
對象並打印:
import csv
from io import StringIO # from StringIO import StringIO in case of Python2
test = [{'col1':1, 'col2':2, 'col3':3},
{'col1':4, 'col2':5, 'col3':6}]
output_file = StringIO(newline='')
dict_writer = csv.DictWriter(output_file, ['col1', 'col2', 'col3'])
dict_writer.writeheader()
dict_writer.writerows(test)
output_file.seek(0)
print(output_file.read())
打印:
col1,col2,col3
1,2,3
4,5,6
編輯:
要寫入多個CSV文件,您可以使用以下代碼段:
import csv
from io import StringIO
test = [{'col1':1, 'col2':2, 'col3':3},
{'col1':4, 'col2':5, 'col3':6}]
output_file = StringIO(newline='')
dict_writer = csv.DictWriter(output_file, ['col1', 'col2', 'col3'])
dict_writer.writeheader()
dict_writer.writerows(test)
with open('work1.csv', 'w', newline='') as f1_out, \
open('work2.csv', 'w', newline='') as f2_out:
f1_out.write(output_file.getvalue())
f2_out.write(output_file.getvalue())
這將創建兩個文件work1.csv
和work2.csv
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.