簡體   English   中英

如何用python編寫字典列表的csv

[英]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.csvwork2.csv

暫無
暫無

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

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