首页 > 解决方案 > 在python中将终端输出到具有单独列的csv

问题描述

我的代码如下:

import csv
with open('Remarks_Drug.csv', newline='', encoding ='utf-8') as myFile:
    reader = csv.reader(myFile)
    for row in reader:
        product = row[0].lower()
        filename = row[1]
        product_patterns = ', '.join([i.split("+")[0].strip() for i in product.split(",")])
        print(product_patterns, filename)

输出如下:(薄膜涂层标签应该是一列,文件名应该是另一列)

film-coated tablet RECD outcome AUBAGIO IAIN-21 AoR.txt
solution for injection 093 Acceptance NO Safety profil.txt

我想将其输出到一个 csv 文件,其中一列作为 product_patterns,另一列作为文件名。我写了下面的代码,但只有最后一行被附加。谁能帮我在这里循环。我写的代码是:

with open ('drug_output.csv', 'a') as csvfile:
    fieldnames = ['product_patterns', 'filename']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writerow({'product_patterns':product_patterns, 'filename':filename})

在此处输入图像描述

标签: pythonloopscsvfor-loopexport-to-csv

解决方案


根据您可以使用的环境,使用更专用的程序来解决您的问题可能更实用。

特别是pandas 包在您的情况下似乎很有用。然后您可以使用以下方法加载 csv:

import pandas as pd
df=pd.read_csv(file_path)

完成必要的操作后,您可以再次保存它

df.to_csv(file_path)

这将为您节省很多在逐行解析时通常会出现的问题,并且还应该提高性能。如果您需要进行一些数据操作,Pandas 是一个非常好的学习包。


推荐阅读