我有多个.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列中的新内容应为“输入”。
此Id列包含2个双引号,并且还有一些额外的空格。而其他列只有1个双引号。
有没有办法在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()
答案 0 :(得分: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])
答案 1 :(得分:2)
尝试Python的csv
模块来读写CSV文件。
答案 2 :(得分:0)
您可以使用正则表达式将其删除:
In [3]: re.sub(r'""Uni-\s*"([0-9]+)""', r'\1', '""Uni- "38447484""', flags=re.I)
Out[3]: '38447484'
答案 3 :(得分:0)
您只想删除“”Uni-和“后跟空格。
将您的代码更改为
for line in f:
line=line.replace('""Uni-','').replace('" ','')
fout.write(line)
你得到的例子
kanika“38447484”MBA