提问人:Antony 提问时间:12/9/2021 最后编辑:Antony 更新时间:12/10/2021 访问量:180
如何使用 python 脚本拆分垂直和水平合并的 csv 数据文件
How to split a csv data file which is vertical and merge horizontally using python script
问:
我是python的新手,我想编写一个脚本来操作从Tera Term获取的csv文件。该文件有 3 列,我想在每 160 行拆分第 3 列并将它们水平堆叠。数据太长,无法手动完成,我相信 python 将是解决这个问题的最佳方法。 下表是输入 .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 列写入值。谁能指导我如何做到这一点?
提前致谢。
答:
-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。
评论