替换python中列的内容

时间:2012-01-16 20:32:28

标签: python csv

我有多个.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()

4 个答案:

答案 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