【问题标题】:Output of terminal to a csv with separate columns in python在python中将终端输出到具有单独列的csv
【发布时间】:2019-07-19 22:07:58
【问题描述】:

我的代码如下:

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})

enter image description here

【问题讨论】:

  • Remarks_Drug.csv 给出这个文件内容
  • 您面临的问题是什么?
  • 您面临的问题可能是因为您逐行循环文件并仅将最后一个元素添加到输出文件只需创建两个单独的数组并将数据保存到然后将其添加到 dict
  • csv 在第一列包含产品名称,在下一列包含匹配的文件名:示例:位于示例中的第二个代码块
  • csv 已附加

标签: python loops csv for-loop export-to-csv


【解决方案1】:

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

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

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

进行必要的操作后,您可以再次保存它

df.to_csv(file_path)

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

【讨论】:

  • 您能否提供一个 csv 示例和所需的输出?
  • 已提供 Csv 示例。所需的输出只是在 '+' 字符之后去除所有字符的相同 csv
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多