如何使用 python 脚本拆分垂直和水平合并的 csv 数据文件

How to split a csv data file which is vertical and merge horizontally using python script

提问人:Antony 提问时间:12/9/2021 最后编辑:Antony 更新时间:12/10/2021 访问量:180

问:

我是python的新手,我想编写一个脚本来操作从Tera Term获取的csv文件。该文件有 3 列,我想在每 160 行拆分第 3 列并将它们水平堆叠。数据太长,无法手动完成,我相信 python 将是解决这个问题的最佳方法。 下表是输入 .csv 文件的样子

Input Table

我希望输出文件采用以下格式output.csv

下面是我的python脚本,

#!/usr/bin/python
""" Parses USS Template project UART data (src.csv) and store result in out.csv"""
import re
import struct
import sys

def decode_file(file_in_name, file_out_name):
    # Open File Input and Output Files
    input_file = open(file_in_name, "r")
    target_file = open(file_out_name, "w")
    # Iterate through the data 
    count=0
    for line in input_file:
        # Remove New Line
        line = line.rstrip("/n")
        # Remove Spaces in front
        line = line.lstrip(" ")
        # Remove White space and tabs
        pattern = re.compile(r"\s+")
        clean_line = re.sub(pattern, " ", line)
        # Split the line by spaces
        line_list = clean_line.split(",")
        #write 3rd column
        if count<160:
           target_file.write(line_list[0]+",")
           target_file.write(line_list[1]+",")
           target_file.write(line_list[2] +"\n")
        else if count%160==0:
                #Goto first row and next column of the target file and write next 160 lines of 3rd column and continue till the end
        count=count+1
        # Close Files
    input_file.close()
    target_file.close()
    print("Successfully Generated: \n", file_out_name)
    return
    
if __name__ == "__main__":
    if len(sys.argv) != 3:
        print ("Invalid input.")
    else:
        # Parse the USS Template project src input file and store result in
        # output csv
        decode_file(sys.argv[1], sys.argv[2])

如何每 160 行转到目标文件的第一行和下一列,并从第 3 列写入值。谁能指导我如何做到这一点?

提前致谢。

Python CSV 数据操作

评论


答:

-1赞 LittlePanic404 12/9/2021 #1

一些关键字,因为我相信您可以在线找到答案和教程:numpy、csv、转置 2D 数组。

例如:

读取 csv 文件 ->

https://pythonspot.com/reading-csv-files-in-python/

转置 2D 数组 ->

https://numpy.org/doc/stable/reference/generated/numpy.transpose.html

编辑:当然,你可以在没有numpy的情况下做到这一点,但如果你有大数据,最好使用numpy。