【问题标题】:Replacing the content of a column in python替换python中列的内容
【发布时间】:2012-01-16 20:32:27
【问题描述】:

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

【问题讨论】:

  • 这不是 csv 文件。逗号在哪里?
  • @Wooble 制表符分隔 csv 或许?
  • 也许,但发布的内容中没有标签,只有空格。我想可能是某种固定宽度的格式。
  • 不,我用空格隔开,以便您理解。用逗号分隔

标签: python csv


【解决方案1】:

正如其他人所指出的,通常确实使用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])

【讨论】:

  • 我尝试了代码,但出现错误。 output.write(input_file.readline())--------- IOError: File not open for writing
【解决方案2】:

尝试使用 Python 的 csv 模块来读写 CSV 文件。

【讨论】:

  • 但是如何替换内容?
  • 简单地从输入文件中读取原始数据并将修改后的数据写入输出文件,一次一行。
  • -0。 OP 可能无法处理此类通用指令。
【解决方案3】:

您可以使用正则表达式来删除它:

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

【讨论】:

    【解决方案4】:

    您只想删除“”Uni-和“后跟一个空格。

    把你的代码改成

    for line in f:
        line=line.replace('""Uni-','').replace('" ','')
        fout.write(line)
    

    例如

    卡尼卡“38447484”工商管理硕士

    【讨论】:

      猜你喜欢
      • 2014-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-26
      • 2022-06-18
      相关资源
      最近更新 更多