Python-如何更改CSV文件中的部分行?

时间:2013-04-14 23:47:48

标签: python csv

我有一个带有一些单词的CSV文件,后跟一个数字,需要一种方法来附加数字;要么添加1,要么将其设置为1。 比方说我有这些话:

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

如果用户输入数字60,我怎么能用它来加上数字,我怎么把它重新设置为1?

我一直在谷歌+ Stackoverflow试图找到答案,但我希望我找不到答案更多是因为我的经验不足。 感谢。

3 个答案:

答案 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/ 将向您展示如何通过给出其他部分以及如何将信息保存回字典来获取字典的一部分。

对不起,这不是一个直接的答案。也许其他人会写一个,但它应该让你开始,

答案 1 :(得分:0)

这可能不是最好的方法,但你可以在loadtxt()的帮助下使用numpy在数组对象中加载csv文件。 下面的代码将为您提供一个二维数组,其中第一列中包含名称,第二列中包含数字。

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

按照您希望的方式对数字进行更改,并使用numpy savetxt()保存文件。 如果你的文件非常好,那么这个解决方案将会很麻烦,因为加载一个庞大的数组会占用大量内存。因此,请将其视为一种解决方法。字典解决方案实际上更好(我认为)。

答案 2 :(得分: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()