在Python中替换列的内容

0 投票
4 回答
2619 浏览
提问于 2025-04-17 10:23

我有多个 .csv 文件,我用 Python 编程把它们合并成一个 .csv 文件。

现在我想用 Python 自动化地替换这个 .csv 文件中某一列的内容。我也可以用记事本打开这个 .csv 文件,然后手动替换那一列的内容,但文件太大了,处理起来很慢。

Name                          ID                                                class  Num
"kanika",""University ISD_po.log";" University     /projects/asd/new/high/sde"","MBA","12"
"Ambika",""University ISD_po.log";" University     /projects/asd/new/high/sde"","MS","13"

在上面的例子中,我需要替换 ID 列的内容。ID 列的新内容应该是“input”。

这个 ID 列是用两个双引号包围的,并且还有一些多余的空格。而其他列只有一个双引号。

有没有办法用 Python 来做到这一点呢?

合并多个 .csv 文件的代码是:

fout=open("out.csv","a")
for line in open("sh1.csv"):
    fout.write(line)
for num in range(2,21):
    f=open("sh"+str(num)+".csv")
    f.next()
    for line in f:
        fout.write(line)
    f.close()
fout.close()

4 个回答

0

你可以使用正则表达式来去掉它:

In [3]: re.sub(r'""Uni-\s*"([0-9]+)""', r'\1', '""Uni-  "38447484""', flags=re.I)
Out[3]: '38447484'
2

可以试试Python的 csv 模块来读取和写入CSV文件。

4

正如其他人所说,通常我们会使用 csv 模块来从 Python 中读取或写入 CSV 文件。

但是,如果你提到的文件就像你发的那样,它的格式不太正确,Python 的 CSV 模块可能无法正确处理它——因为你想要修改的那一列使用了错误的双引号。

所以,最好把你的文件当作文本文件来处理,然后在里面进行修改:

with open("myfile.csv") as input_file:
   with open("output.csv", "wt") as output:
      output.write(input_file.readline())
      for line in input_file:
           parts = line.split('""')
           id = parts.split('"')[-1]
           output.write(parts[0] + id + parts[2])

撰写回答