在Python中替换列的内容
我有多个 .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])