【发布时间】:2018-05-21 17:55:35
【问题描述】:
我想将一个巨大的 csv 文件复制到另一个 csv 文件,但跳过开始 100 行的第一个文件和retainheader,同时我想忽略一些在引号中的名称之间不需要的逗号,例如-"嘿,罗杰”
输入数据:
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-A 2,400,000 UNITS”是一个元素,中间包含逗号,我想忽略或替换为空格,也想忽略前 3 行。所以 output.csv 看起来像:
Header------>
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
请帮助我。 下面是我的sn-p:
with open(filename , 'rb') as infile:
data_in = infile.readlines()
with open ('temp.csv', 'wb') as outfile:
outfile.writelines(data_in[0])
outfile.writelines(data_in[3:])
os.remove(filename)
os.rename('temp.csv',filename)
我没有办法替换其中不需要的逗号。
【问题讨论】:
-
我不是 python 大师,但我使用过 CSV 文件(很遗憾)。包含逗号的指标是字段周围的双引号。如果您想删除那些“额外”逗号,请专注于匹配包含在引号中的字段的正则表达式,然后从中删除逗号,然后使用该字符串(不带引号是我的建议)。至于保留标题并删除某些行,我会使用迭代器来跳过一组行,进行记录处理然后附加到目标文件。祝你好运。
-
你写过: 1) 从第一个文件和retainheader开始跳过100行 ; 2) 想忽略前 3 行。那么,您的实际具体情况是什么?
-
您必须在
data_in上逐行循环,并按照您希望使用 if 语句等的方式跳过/更正代码。然后,如果您将更正的行放入一个列表并将其写在最后,或者在处理它们时逐行写。 -
您可以将this answer 和this answer 结合到您之前的问题中并获得所需的解决方案,还是您要逐步重复您的问题,直到 SO 社区为您完成所有工作?
标签: python python-3.x python-2.7 csv