首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将逗号分隔的对象导出到.csv文件中

如何将逗号分隔的对象导出到.csv文件中
EN

Stack Overflow用户
提问于 2021-04-23 11:42:36
回答 1查看 252关注 0票数 0

下面的代码用于将原始数据从指定的串口输出到python,以及修改后的数据(现在是CSV格式),可以通过csv.writer输出到.csv文件中。但是,最终的输出显示为Fri 23 21:30:05 2021 "19,62,0,0,25“。您可能会看到这是不正确的,因为输出应该是time.asctime(time.localtime(time.time(),将decoded_bytes转换为星期五(4月23日21:30: 2021,19,62,0,0,25 )。我不知道”“是如何添加的,也不知道为什么python认为日期的'19‘部分--time对象并将它放在同一列中。任何帮助都将不胜感激。

代码语言:javascript
运行
复制
import serial
import time
import csv

#ser = serial.Serial('/dev/ttyUSB0', baudrate = 9600, timeout = 1)
ser = serial.Serial('COM4', baudrate = 9600)
ser.flushInput()

while True:
    
    ser_bytes = ser.readline()
    line = ser.readline().decode('utf-8')[:-1]
    decoded_bytes = line.replace(":","",5).replace("Soil Moisture","",1).replace("Humidity","",1).replace("CO2","",1).replace("ppm","",1).replace("ppb","",1).replace("%RH","",1).replace("Temp","",1).replace("EC","",1).replace("TVOC","",1).replace(" ","",8)

    if line:  # If it isn't a blank line
        print("Incoming DATA:")
        print(line)
        print(".csv DATA:")
        print(decoded_bytes)
        with open("test_data.csv","a") as f:
            writer = csv.writer(f,delimiter=" ")
            writer.writerow([time.asctime(time.localtime(time.time())),decoded_bytes])

示例python shell输出:

输入数据:土壤湿度:22 RH,湿度: 62.00%RH,CO2: 0 0ppm,TVOC: 0 0ppb,温度:25.00

.csv数据:22 62.00 0 0 25.00

输入数据:土壤湿度:18 RH,湿度: 62.00%RH,CO2: 400 0ppb,TVOC: 0 0ppb,温度:24.45

.csv数据: 18,62.00,400,0,24.45

输入数据:土壤湿度:15 RH,湿度: 62.00%RH,CO2: 400 0ppb,TVOC: 0 0ppb,温度:25.00

.csv数据: 15,62.00,400,0,25.00

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-23 12:48:36

试着适应这个解决方案,看看它是否有帮助。

file_input.txt

代码语言:javascript
运行
复制
Soil Moisture: 22EC, Humidity: 62.00%RH, CO2: 0ppm, TVOC: 0ppb, Temp:25.00
Soil Moisture: 18EC, Humidity: 62.00%RH, CO2: 400ppm, TVOC: 0ppb, Temp:24.45
Soil Moisture: 15EC, Humidity: 62.00%RH, CO2: 400ppm, TVOC: 0ppb, Temp:25.00

脚本

代码语言:javascript
运行
复制
import time



import re

def write_to_csv(list_input):
    import csv
    with open('file_output.csv', 'a', newline='') as myfile:
        wr = csv.writer(myfile, quoting=csv.QUOTE_NONNUMERIC)
        wr.writerow(list_input)

def read_input(file_input):
    with open(file_input, 'r') as file_in:
        list_file = file_in.read().splitlines()
        for i in list_file:
            # Find the pattern
            res=re.findall(': ?(\d*\.?\d*)', i)
            # Convert the list to number
            res=list(map(float,res))
            time_stamp = time.asctime(time.localtime(time.time()))
            res.insert(0,time_stamp)
            write_to_csv(res)


file_input = 'file_input.txt'
read_input(file_input)

file_output.csv

代码语言:javascript
运行
复制
"Fri Apr 23 10:29:11 2021",22.0,62.0,0.0,0.0,25.0
"Fri Apr 23 10:29:11 2021",18.0,62.0,400.0,0.0,24.45
"Fri Apr 23 10:29:11 2021",15.0,62.0,400.0,0.0,25.0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67229352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档