簡體   English   中英

用Python解析CSV文件

[英]Parsing a CSV File in Python

我有一個包含以下幾列的CSV文件:

id,index,value,lenght
1,2 9 5,2 9 5,10
2,3 5 8,3 5 8,10
3,1,7,1

這是有關稀疏向量,向量的id和長度,向量的值以及向量的索引的信息。

我想解析以下信息:id1,ide2,ide3,索引1,索引2,索引3,值1,值2,值3,lenght1,lenght2,lenght3。

我想使用這些信息來執行一些操作,例如稀疏向量的加法和乘法。

到目前為止,我的代碼如下所示:

from __future__ import division
from sympy import *

import numpy as np  
import csv



readVektor = csv.DictReader(open("data.csv"))

for column in readVektor:
        print (column)


for column in readVektor:
        id = int(column["id"])
        index = int(column["index"])
        value = int(column["value"])
        length = int(column["lenght"])


#with open('data.csv', newline='') as readVektor:                      # Einlesen der Daten für Vektor 1
 #       data = csv.reader(readVektor, delimiter=';', quotechar='|')
  #      for row in data:
   #             print('; '.join(row))

#pprint(data)



class sparse(object):       # Klasse, deren Objekte sparse Vektoren sind


        def __init__(self, index, value, lenght, skalar):       # Konstruktor
                self.Index = index  
                self.Value = value 
                self.Laenge = lenght
                self.Skalar = skalar



        def maxNorm(self, value):       # Berechnung der Maxmimums-Norm
                maxNorm = max(value)
                max_idx = value.index(maxNorm)
                #return max_idx, maxNorm
                print ("maxNorm: ", maxNorm)


        def sMult(self, skalar, value):     # Skalarmultiplikation
                sMult = skalar * value
                #return sMult
                print ("sMult: ", sMult)


        def Summe(self, index1, index2, value1, value2):    # Berechnung der Summe
                #for i, j in range(len(index1, index2)):
                #        if index1(i) < index2(i):
                #                self.summe(i) = value1(i)
                #        if index1(i) > index2(i):
                #                self.summe(i) = value2(i)
                #        if index1(i) == index2(i):
                #                self.summe(i) = value1(i) + value2(i)
                #        return summe
                summe = value1 + value2
                #return summe
                print ("summe: ", summe)


        def Differenz(self, index1, index2, value1, value2):
                differenz = value1 - value2
                #return differenz
                print ("differenz: ", differenz)



        def iProd(self, value1, value2):
                iProd = np.dot (value1, value2)
                #return iProd
                print ("iProd: ", iProd)


        #def Differenz(self, index1, index2, value1, value2):               # Berechnung der Differenz
    #   for i in range(len(index1, index2))
    #       if index1(i) < index2(i)
    #           self.differenz(i) = value1(i)
    #       if index1(i) > index2(i)
    #           self.differenz(i) = value2(i)
    #       if index1(i) == index2(i)
    #           self.differenz(i) = value1(i) - value1(i)

        #self.differenz = value1 - value2




    #def Skalarprodukt(self, value1, value2):           #Skalarprodukt
    #   for i in range(len(index1, index2))
    #       if index1(i) < index2(i)
    #           self.skalarprodukt(i) = 0
    #       if index1(i) > index2(i)
    #           self.skalarprodukt(i) = 0
    #       if index1(i) == index2(i)
    #           self.skalarprodukt(i) = value1(i) * value1(i)

        #self.skalarprodukt = np.dot(value1, value2)        

#print ("maxNorm: ", maxNorm)
#print ("summe: ", summe)
#print ("differenz: ", differenz)
#print ("sMult: ", sMult)
#print ("iProd: ", iProd)

sparsevector1 = sparse([2,9,5],[2,9,5],10,7)
sparsevector2 = sparse([3,5,8],[3,5,8],10,7)

sparsevector1.maxNorm([2,9,5])
sparsevector2.maxNorm([3,5,8])

sparsevector1.sMult(7,[2,9,5])
sparsevector2.sMult(7,[3,5,8])

sparsevector1.Summe([2,9,5],[3,5,8],[2,9,5],[3,5,8])
sparsevector2.Summe([2,9,5],[3,5,8],[2,9,5],[3,5,8])

#sparsevector1.Differenz([2,9,5],[3,5,8],[2,9,5],[3,5,8])
#sparsevector2.Differenz([2,9,5],[3,5,8],[2,9,5],[3,5,8])

sparsevector1.iProd([2,9,5],[3,5,8])
sparsevector2.iProd([2,9,5],[3,5,8])

如何解析必要的信息並將其傳遞給函數?

看起來您的稀疏類將數組作為輸入...可以嘗試如下操作:

for column in readVektor:
    id = int(column["id"])
    length = int(column["lenght"])

    index = [int(x) for x in column["index"].split(' ')]
    value = [int(x) for x in column["value"].split(' ')]

那么index和value都是整數列表。

暫無
暫無

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

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