使用python解析前端(vue)post上来的csv文件,并处理csv文件中含有英文逗号

import codecs
import csv
import os
# 传来的csv文件为bytes格式
fileInfo = request.body.decode('utf-8')
print(fileInfo)
fileInfoList = fileInfo.split('\r\n')
# csv文件在列表中为五位
context = fileInfoList[4]

path = os.path.abspath('.')
with codecs.open(path+'file.csv', 'wb+', 'utf-8') as file_csv:
    writer = csv.writer(file_csv, delimiter=',')
    contextList = context.split('\n')
    for item in contextList:
        if item != '':
            # 将双引号之间的英文逗号换成中文逗号(一般csv文件中若有英文逗号,则一般该单元格会被双引号括住),主要思路为先查找下标,在利用切边进行替换,while True起到csv一行数据的所有替换
            while True:
                index_range_obj = re.search(r'\"[^\"]*[^\"]*\"', item)
                if index_range_obj:
                    index_range = index_range_obj.span()
                    item = item[0:index_range[0]]+item[index_range[0]+1:index_range[1]-1].replace(',', ',') + item[index_range[1]:]
                else:
                    break
            csvLine = item.split(',')
            writer.writerow(csvLine)
    print("保存文件成功,处理结束")

如果大家有更好的方法能解决英文逗号保持不变,不用用中文逗号替换,欢迎大佬留言交流~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现上传 CSV 文件并在 Vue 解析并显示数据,你可以按照以下步骤进行操作: 1. 安装 `papaparse` 库 ``` npm install papaparse --save ``` 2. 在 Vue 组件引入 `papaparse` ```javascript import Papa from 'papaparse'; ``` 3. 在 Vue 组件定义一个 data 属性用来存储上传的 CSV 文件解析后的数据 ```javascript data() { return { file: null, csvData: null }; }, ``` 4. 在 Vue 模板添加一个文件上传组件和一个解析按钮 ```html <template> <div> <input type="file" @change="handleFileUpload"> <button @click="parseCSV">解析</button> <table v-if="csvData"> <thead> <tr> <th v-for="(value, key) in csvData[0]" :key="key">{{ key }}</th> </tr> </thead> <tbody> <tr v-for="(row, index) in csvData" :key="index"> <td v-for="(value, key) in row" :key="key">{{ value }}</td> </tr> </tbody> </table> </div> </template> ``` 5. 在 Vue 组件定义一个方法用来处理文件上传事件,并将上传的文件存储在 `file` 属性 ```javascript methods: { handleFileUpload(event) { this.file = event.target.files[0]; } } ``` 6. 在 Vue 组件定义一个方法用来解析上传的 CSV 文件 ```javascript methods: { parseCSV() { Papa.parse(this.file, { header: true, complete: (results) => { this.csvData = results.data; } }); } } ``` 7. 当用户点击解析按钮时,调用 `parseCSV` 方法解析上传的 CSV 文件,并将结果存储在 `csvData` 属性,在表格显示解析后的数据。 这样,用户上传 CSV 文件后,可以点击解析按钮将其解析并在表格显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值