加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用Python批量编辑csv文件

发布时间:2020-12-16 21:47:11 所属栏目:Python 来源:网络整理
导读:我需要编辑几个csv文件.实际上,大多数文件都是正常的,它只是需要更改的最后一个(第41个)列.对于该列中特定字符串的每次出现,我需要将其替换为不同的字符串;具体而言,每次出现S-D都需要用S代替.我试图用Python完成这个,但我想我需要编写csv文件,我不太清楚如

我需要编辑几个csv文件.实际上,大多数文件都是正常的,它只是需要更改的最后一个(第41个)列.对于该列中特定字符串的每次出现,我需要将其替换为不同的字符串;具体而言,每次出现’S-D’都需要用’S’代替.我试图用Python完成这个,但我想我需要编写csv文件,我不太清楚如何做到这一点:

import os 
import csv


path=os.getcwd()

filenames = os.listdir(path)

for filename in filenames:

    if filename.endswith('.csv'):
        r=csv.reader(open(filename))

        for row in r:
            if row[40] == "S-D":
                row[40] = "S"

有帮助吗?此外,如果有人用shell脚本快速,优雅地做到这一点,那对我来说也许会非常有帮助.

最佳答案
请务必阅读CSV File Reading and Writing的Python文档.有很多可以在那里学习.这是基于您的问题的基本示例.仅修改最后一列中的数据,在名称中写出带有“_edited”的修改过的文件.

import os 
import csv


path=os.getcwd()

filenames = os.listdir(path)

for filename in filenames:

    if filename.endswith('.csv'):
        r=csv.reader(open(filename))
        new_data = []
        for row in r:
            row[-1] = row[-1].replace("S-D","S")
            new_data.append(row)

        newfilename = "".join(filename.split(".csv")) + "_edited.csv"
        with open(newfilename,"w") as f:
            writer = csv.writer(f)
            writer.writerows(new_data)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读