2013-04-14 52 views
0

我有一個CSV文件,其中有一些單詞,後面跟着一個數字,並且需要一種附加數字的方法;無論是加1,或者設置回1 例如說我有這樣的話:Python-我如何更改CSV文件中的一行的一部分?

variant,1 
sixty,2 
game,3 
library,1 

如果用戶輸入的號碼六十年代,我怎麼可以用它來添加一個到號碼,我如何將它重置爲1?

我已經遍及谷歌+ Stackoverflow試圖找到答案,但我希望我不能找到答案是由於我的經驗超過任何東西。 謝謝。

回答

0

這是一個使用fileinput快速扔在一起。由於我不知道爲什麼要減少或重置您的價值的條件,因此我將它添加爲可以隨意傳遞的關鍵字arg。如

updateFileName(filename, "sixty", reset=True) 
updateFileName(filename, "sixty", decrease=True) 
updateFileName(filename, "sixty") 

每個的結果應該是不言自明的。祝你好運!我把它包裹在一個Try中,因爲我不知道你的結構是怎麼樣的,這會導致它最終以任何方式失敗。如果你有空格,你需要使用.strip()鍵和值。

import fileinput 
def updateFileName(filename, input_value, decrease=False, reset=False): 
    try: 
     for line in fileinput.input(filename, inplace=True): 
      key, value = line.split(",") 
      if key == input_value: 
       if decrease: 
        sys.stdout.write("%s,%s"(key, int(value) - 1) 
       elif reset: 
        sys.stdout.write("%s,%s"(key, 1) 
       else: 
        sys.stdout.write("%s,%s"(key, int(value) + 1) 
       continue 
      sys.stdout.write(line) 

    finally: 
     fileinput.close() 
+0

非常感謝!這工作完美! –

0

不知道什麼時候你想把一個數字切換到1,當你想要加1時,我不能給出一個完整的答案,但我可以設置你在正確的軌道上。 首先你要導入csv文件,所以你可以改變它。 csv模塊在這方面非常有幫助。請在此處閱讀:http://docs.python.org/2/library/csv.html

您可能想將其讀入字典結構中,因爲這會將每個單詞鏈接到相應的編號。像這樣的make dictionary from csv file columns

東西那麼你要使用的raw_input(或輸入,如果你正在使用Python 3.0) 得到你正在尋找的字和使用爲重點,以查找和更改到你想要的號碼更改。 http://anh.cs.luc.edu/python/hands-on/handsonHtml/handson.html#x1-490001.12http://www.sthurlow.com/python/lesson06/ 將向您展示如何通過將字典的另一部分提供給另一部分以及如何將信息保存回字典中來獲取字典的一部分。

對不起,這不是一個直接的答案。也許別人會寫一個,但它應該讓你開始,但它應該讓你開始,

+0

首先,感謝您的快速和翔實的迴應,我會考慮使用字典。我想在用戶輸入正確答案時將數字加1,並在錯誤時將數字重置爲1。我已經有了一個函數來決定他們是否得到了答案,並返回一個True/False布爾值。我打算用這個來給數字加1或將它重置爲1,基本上顯示他們連續有多少次他們得到這個單詞是正確的。 –

0

這可能不是最好的辦法做到這一點,但你可以加載你的csv文件在數組對象使用numpy的幫助下loadtxt()。 下面的代碼將爲您提供一個2維數組,其中第一列中的名稱和第二列中的數字。

import numpy as np  
a = np.loadtxt('YourFile',delimiter=',') 

上的數字進行更改您想要的方式,並使用numpy的savetxt()保存文件。 如果你的文件非常糟糕,這個解決方案將是一個痛苦,因爲加載一個巨大的數組需要大量的內存。所以認爲它只是一種解決方法。字典解決方案實際上更好(我認爲)。

相關問題