如何在某些条件下,将包含50000行和标题的CSV文件复制到另一个CSV文件中?

2024-03-29 02:26:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把一个巨大的csv文件复制到另一个csv文件中,但是跳过第一个文件和retainheader的100行开头,同时我想忽略一些名字之间不需要的逗号,比如“嘿,罗杰”

输入数据:

    Header------>
EPINASTINE HCL 0.05% EYE DROPS,51991083675,7.75853,03/23/2016,ML
EPINASTINE HCL 0.05% EYE DROPS,51991083675,7.75853,03/23/2016,ML
EPINASTINE HCL 0.05% EYE DROPS,51991083675,7.75853,03/23/2016,ML
HYDROMORPHONE 2 MG TABLET,68084042301,0.08511,03/23/2016,EA
"BICILLIN L-A 2,400,000 UNITS",60793070210,54.03213,01/01/2016,ML
EPINASTINE HCL 0.05% EYE DROPS,51991083675,7.75853,03/23/2016,ML

在第五行中,“BICILLIN L-A2400000 UNITS”是一个元素,中间包含逗号,我想忽略它,或者用空格替换它,还想忽略前3行。所以输出.csv看起来像:

^{pr2}$

请帮我这个忙。 以下是我的片段:

^{3}$

我找不到方法来替换这里不需要的逗号。在


Tags: 文件csv数据名字mlheadereyeunits
1条回答
网友
1楼 · 发布于 2024-03-29 02:26:51

您将需要逐行访问该文件,因为您有一个有趣的要求,即保留第一行(标题),但随后会有一个间隙,并且在不同的行上执行一些regex操作。您的代码应该如下所示:

import os
filename = "name_of_file.csv"
with open(filename , 'rb') as infile:
  with open ('temp.csv', 'wb') as outfile:
    start_row = 3;
    row_count = 0;
    for line in infile.readlines():
      if row_count >= start_row:
        # find all matches for commas inside double quotes
        regex = b"\".*?,.*?\""
        matches = re.findall(regex, line)
        for match in matches:
          # for each match found, remove unwanted commas and replace them
          new_cell = match.replace(b',', b' ')
          line = re.sub(match, new_cell, line)
        # write line to file
        outfile.write(line)
      elif row_count == 0:
        # header row, copy it
        outfile.write(line)
      row_count += 1
os.remove(filename)    
os.rename('temp.csv',filename)

相关问题 更多 >