用Python编辑电子表格(通过CSV文件传递)

2024-06-16 11:37:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下字段的电子表格:

id age smoker do sport
1   35  yes    rare
2   40  no     frequently
3   20  no     never 
4   ..  ..     ..

我想创建一个Python脚本来编辑通过csv文件转换传递的电子表格。在

“是”变为1,“否”变为0,“稀有”变为0,“频繁”变为1,“从不”变为2。在

我将电子表格保存为csv文件,使用分隔符“;”和引号'”。在

现在我写了这个代码:

^{pr2}$

但我不知道如何继续。。。。在

有人能告诉我如何使用python进行这些更改吗?在

使用Python列表或字典更好吗?在

谢谢大家!在


Tags: 文件csvno脚本id编辑agedo
3条回答

既然您已经了解了Python的csv library,那么对于输入csv的每一行,创建一个包含所需更改的新行,并将其写入一个新的csv文件,这应该很简单。在

请注意csv阅读器如何将每一行视为一个列表。接下来,查看csv writer的^{}方法;它接受一个python列表并将其作为csv行写入。你需要做的就是一次读一行,做你想要的修改,然后把它吐出来给作者。使用您的代码:

for row in reader: #for each row in the input
    outrow = list(row) # make a copy of the row. I'm not sure if you NEED to do this, but it doesn't hurt.

    if outrow[2] == "yes": #if the value in the 3rd column, "smoker", is "yes"
        outrow[2] = 1 #change it to 1
    elif outrow[2] == "no": #if it's "no"
        outrow[2] = 0 #change it to 0.

    #repeat this process for outrow[3] (meaning column #4, "do sport")

    output.writerow(outrow)

您可能注意到python调用第3列2和第4列3这是因为python从0开始计数(所以第一列是第0列)。您应该能够按照这个例子来进行所有需要的更改。在

完成后别忘了关闭文件!在

尽管CSV文件看起来像电子表格,但其核心只是文本文件。这意味着您实际上不需要使用csv库,而是将其作为一个简单的字符串来读取。在

将文件作为字符串后,可以使用正则表达式转换相关值。下面是一个例子:

import re
o = open("output","w")
data = open("file").read()
o.write( re.sub("someword","newword",data) )
o.close()

记住,对于要转换的每个值,都需要一个re.sub()调用。在

如果始终使用该格式,并且希望逐行替换:

replacements_dict = {
  'yes': 1,
  'no' : 0,
  'rare': 0,
  'frequently': 1,
  'never': 2
}

for row_list in reader:
   output.writerow([
     row_list[0], 
     row_list[1]
     replacements_dict[row_list[2]],
     replacements_dict[row_list[3]]
    ])

你也可以把你的csv作为一个字符串读入内存,只需替换像georgesl sugger这样的单词

相关问题 更多 >