簡體   English   中英

從文本文件中讀取數據,並將每一列作為python中的列表

[英]read in data from a text file and have each column as a list in python

這是我要導入的文本文件中的數據:

-2, 2.1, 0.484147876841
0, 2.4, 0.0550985751073
2, 2.5, -0.48502362586
4, 3.5, -0.161922119386
6, 4.2, 0.442947234586

我希望將每一列數據都放在一個單獨的列表中,如下所示:

x = [-2, 0,2 ,4 ,6]
y = [2.1, 2.4, 2.5, 3.5, 4.2]
e = [0.484147876841, 0.0550985751073, -0.48502362586, -0.161922119386, 0.442947234586]

我嘗試了以下代碼:

inputdata=open("C:\Users\Chloe\Google Drive\Uni\Computing\data.txt", 'r')

for datapoint in inputdata:  
    datapoint=datapoint.strip('\n')
    splitdata=datapoint.split(',')
    x.append(splitdata[0])
    y.append(splitdata[1])
    e.append(splitdata[2])

您收到什么錯誤? 試試這個,對我有用:

inputdata=open("C:\Users\Chloe\Google Drive\Uni\Computing\data.txt", 'r')
x = []
y= []
e = []
for datapoint in inputdata:  
    datapoint=datapoint.strip('\n')  
    splitdata=datapoint.split(',')  
    x.append(int(splitdata[0]))  
    y.append(float(splitdata[1]))  
    e.append(float(splitdata[2]))
print x
print y
print e

輸出

[-2, 0, 2, 4, 6]
[2.1, 2.4, 2.5, 3.5, 4.2]
[0.484147876841, 0.0550985751073, -0.48502362586, -0.161922119386, 0.442947234586]

這是一種實現方法:

input_file = 'data.txt'
with open(input_file) as f:
    a = [map(float, line.strip('\n').split(',')) for line in f]
    x, y, z = [list(l) for l in zip(*a)]
print(x, y, z)

印刷品:

[-2.0, 0.0, 2.0, 4.0, 6.0] [2.1, 2.4, 2.5, 3.5, 4.2] [0.484147876841, 0.0550985751073, -0.48502362586, -0.161922119386, 0.442947234586]

如果您不介意xyz將是元組,則可以僅使用zip(*a)而不是在最后一個列表理解中用列表包裝每個元素。

首先,您可能需要轉換為正確的數據類型:

x.append(int(splitdata[0]))  
y.append(float(splitdata[1]))  
e.append(float(splitdata[2]))
...

其次,這是一個csv文件,您最好使用正確的庫對其進行處理:

import csv

with open(r"C:\Users\Chloe\Google Drive\Uni\Computing\data.txt", 'rb') as csvfile:
  reader = csv.reader(csvfile):
  for row in file:
    x.append(int(row[0]))
    ...
file1=open("D:\price.txt","r")
x=[]
y=[]
z=[]
for i in file1: 
    x.append(i.strip().split())
    print(x)
for i in x:
    y.append(int(i[0]))
    z.append(int(i[1]))
print(y,z)

暫無
暫無

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

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