【问题标题】:Web Generated Dictionary to CSV fileWeb 生成的字典到 CSV 文件
【发布时间】:2020-07-27 18:42:52
【问题描述】:

我正在尝试使用烧瓶从网站的联系表格(姓名、电子邮件等)收集信息到 csv 文件中。该数据被存储到 mega_data 变量中,该变量将其转换为字典。

字典是这样的; {'姓名':'xyz','电子邮件':'xyz','主题':'xyz','消息':'xyz'}

代码如下:

#Dictionary into CSV 
 
def file_to_csv(data):
    with open('database.csv', 'a+', newline='') as database:
        full_name = data['Name']
        email = data['Email']
        subject = data['Subject']
        message = data['Message']
        writer = csv.writer(database2, delimiter=',',
                            quotechar='"', quoting=csv.QUOTE_MINIMAL, lineterminator='\n')
        writer.writerow([full_name, email, subject, message])

#Requesting DATA

@app.route('/submit_form', methods=['POST', 'GET'])
def submit_form():
    error = None
    if request.method == 'POST':
        mega_data = {}
        data = request.form.to_dict()
        for k, v in data.items():
            mega_data.update({k: v})
        file_to_csv(mega_data)
        return render_template('/thanks.html', name=data['Name'].split(' ')[0])
    return 'Something went wrong, Try again!'

但是通过使用这种方法,我已经需要准备一个带有指定标题(或字典中的键)的 csv 文件,该文件将由任何字符分隔。 我基本上想要的是能够在函数本身中定义标题,这将生成 csv 文件,其中列出了标题及其相关值。

CSV 文件应如下所示:

NAME EMAIL SUBJECT MESSAGE                                               
abc  abc   abc     abc                                                    
xyz  xyz   xyz     xyz

This is the contact form where from I am collecting data and converting into dictionary, I want to put this dictionary data into CSV file.

任何帮助将不胜感激!!!

【问题讨论】:

  • 您是否尝试过使用csv.DictWriter
  • 我也试过了,但我想我们必须手动提供键值对,但在这种情况下,我有一个由网络生成的动态字典。

标签: python csv dictionary


【解决方案1】:

下面的代码会帮助你

def header_present(file):
    # open the file here and check the header, if present or not  return True/False

def def file_to_csv(file,record):
    with open(file, 'a') as f:
        if header():
            csv.DictWriter(f, record.keys()).writeheader()
        json.dump(record, f)
        f.write(os.linesep)

【讨论】:

    【解决方案2】:

    1 您可以使用 pandas 库根据需要创建带有列的 csv 文件: 将熊猫导入为 pd

    2 创建一个空字典: mega_data = {}

    3 比使用 full_name 您可以创建一个键并在其中输入您想要的所有值: mega_data[full_name] = [full_name,email,subject,message]

    4 现在通过使用 pandas,您可以为您的列指定任何您想要的名称: mega_data_df = pd.DataFrame.from_dict(mega_data, orient='index', columns=['NAME', 'EMAIL', 'SUBJECT'])

    5 之后将此数据保存为 csv 文件并为该文件命名: mega_data_df.to_csv('mega_data.csv') 当然有很多方法可以使用 pandas 所以,请查看更多关于 pandas 库的信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 2016-11-22
      • 2015-06-24
      • 2021-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多