簡體   English   中英

建立在“如何使用python讀寫表/矩陣到文件?”的基礎上

[英]Building on “How to read and write a table / matrix to file with python?”

回到13年2月8日20:20,YamSMit提出了一個問題(請參閱: 如何使用python讀寫表/矩陣到文件? ),類似於我正在努力的工作:從Excel表(CSV)開始具有3列和不同數量的行。 列的內容是字符串,浮點數和字符串。 第一個字符串的長度會有所不同,而另一個字符串可以固定(例如2個字符)。 該表需要進入二維數組,以便我可以對數據進行操作以生成最終文件(將是文本文件)。 我已經嘗試了stackoverflow中提出的各種策略,但是我總是會遺漏一些東西,而且我還沒有看到所有部分的示例,這就是我們努力找出這一點的原因。

樣本數據將類似於:Ray Smith,41645.87778,V1

我已經閱讀並探討了numpy和astropy,因為可用的文檔說它們使這種類型的代碼變得容易。 我試過導入csv。 某種程度上,代碼並沒有在一起。 我應該補充一點,我正在用Python 3.2.3編寫(這似乎是一個錯誤,因為很多文檔是針對Python 2.x的)。

我意識到這個問題的基本性質指導我閱讀更多教程。 我讀過很多書,但是這些教程總是引用足夠多的書,以至於我無法組裝正確的片段:讀取表文件,寫入2D數組,然后……做更多的事情。

我很感激任何人為我提供可行的代碼概述,或為我提供一些特定的文檔,我應該閱讀這些文檔以處理我要編寫的代碼的特定性質。

提前謝謝了。 (很抱歉,請嘗試填寫。)

我對2.x較為熟悉,但是從此處找到的3.3 csv文檔中,它似乎與2.x大致相同。 以下函數將讀取一個csv文件,並返回文件中找到的行的2D數組。

import csv
def read_csv(file_name):
    array_2D = []
    with open(file_name, 'rb') as csvfile:
        read = csv.reader(csvfile, delimiter=';') #Assuming your csv file has been set up with the ';' delimiter - there are other options, for which you should see the first link.
        for row in read:
            array_2D.append(row)
    return array_2D

然后,您將能夠按以下方式操作數據(假設您的csv文件稱為“ foo.csv”,所需的文本文件為“ foo.txt”):

data = read_csv('foo.csv')
with open('foo.txt') as textwrite:
    for row in data:
        string = '{0} has {1} apples in his Ford {2}.\n'.format(row[0], row[1], row[2])
        textwrite.write(string)
        #if you know the second column is a float:
        manipulate = float(row[1])*3
        textwrite.write(manipulate)

然后將字符串寫入“ foo.txt”,如下所示:

Ray Smith has 41645.87778 apples in his Ford V1.\n

並且maniuplate將被寫為'foo.txt':

124937.63334

暫無
暫無

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

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