簡體   English   中英

將.txt文件(數據提要)轉換為.csv文件

[英]Convert .txt file (data feed) to .csv file

基本上,原始數據沒有標題,只有值(但我有標題列表)。 分隔符為“ |”。 現在,我嘗試執行的操作是將txt文件轉換為csv文件。 csv文件包含我具有的標頭和相應的值。

例如:

txt文件如下所示:

sadasd | dsdads | adsasd

值1 |值2 |值3 |值4 | 值5 | 值100 |值101 |值102 |值103 |值104 |值105值200 |值201 |值202 |值203 |值204 |值205

sdasd | dsa | dsdad

轉換后的.csv文件如下所示:

標頭1,標頭2,標頭3,標頭4,標頭5,

值1,值2,值3,值4,值5,

值100,值101,值102,值103,值104,值105

值200,值201,值202,值203,值204,值205

我剛剛開始學習python,我的想法是:

  • 刪除第一行和最后一行。

  • 使用字典列表:每一列都是帶有鍵的列表(我有標題)。 到數據框

  • 轉換為.csv

因此看起來像{'標題1':[值1,值100,值200],'標題2':[值2,值101,值201]。 然后轉換為.csv。

那只是我的想法,或者您有最簡單的方法,但僅使用python。

使用csv模塊

例如:

import csv
with open(filename, "r") as infile:
    data = []
    for i in infile.readlines()[1:-1]:                   #Strip first and last line. 
        if i.strip():
            data.extend(i.strip().split("|"))
data = [data[i:i+5] for i in range(0, len(data), 5)]     #Split list to sub-list of 5 elements
print(data)


header = ["header 1","header 2", "header 3", "header 4", "header 5"]
with open(outfile, "w") as outfile:                     #Output CSV file
    writer = csv.writer(outfile, delimiter=",")
    writer.writerow(header)                             #Write Header
    writer.writerows(data)                              #Write content.

從stackoverflow中的零件拼接起來產生以下解決方案

import pandas as pd

mycolnames = ['col1','col2','col3','col4','col5']

# Use the sep argument to change your delimiter accordingly
df = pd.read_csv("foo.txt", sep="|")

# Set your column names to the data frame
df.columns = mycolnames

# Write your desired columns to csv
df['col1'].to_csv("bar.csv", sep=",")

學分

@ atomh33ls- 如何在numpy中將csv讀取到記錄數組中?

@ LangeHaare-使用Orient ='index'在熊貓數據框from_dict中設置列名稱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM