[英]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讀取到記錄數組中?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.