社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

在python中将for循环的输出写入csv

checkmate • 6 年前 • 2375 次点击  

我正在打开一个名为 Remarks_Drug.csv 其中包含 产品名称 和地图 文件名 在连续的列中。我在产品栏做一些操作 删除之后的所有字符串内容 + 性格。把绳子从 + 字符,我将结果存储在一个名为 product_patterns .

现在我要开一个新的 csv 我想把for循环的输出写到 两列,第一列包含 产品模式 第二个包含 相应的 filenames .

我现在得到的输出只是 output csv 我在找的。 我想我没有正确地循环,所以每一行 产品模式 文件名得到 附加在 输出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()
        #print('K---'+ product)
        filename = row[1]
        product_patterns = ', '.join([i.split("+")[0].strip() for i in product.split(",")])


        #print(product_patterns, filename)

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

样本输入:

    Film-coated tablet + TERIFLUNOMIDE, 2011-07-18 - Received approval letter_EN.txt
    Film-coated tablet + VANDETANIB,             2013-12-14 RECD Eudralink_Caprelsa II-28 - RSI - 14.12.2017.txt
    Solution for injection + MenQuadTT, 395_EU001930-PIP01-16_2016-02-22.txt
    Solution for injection + INSULIN GLARGINE,  2017-11-4 Updated PR.txt
    Solution for injection + INSULIN GLARGINE + LIXISENATIDE,   2017 12 12 Email Approval Texts - SA1006-.txt
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49399
文章 [ 2 ]  |  最新文章 6 年前
RussellB
Reply   •   1 楼
RussellB    7 年前
import csv
import pandas as pd

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

#     print(mydrug)

    df = pd.DataFrame(mydrug, columns=['product_patterns', 'filename'])
    print(df)
    df.to_csv('drug_output100.csv', sep=',', index=False)

这利用了 pandas 图书馆。如果你要处理大的 csv 文件使用 panda 在性能和内存方面,s将非常方便和高效。这只是上述问题的另一种解决方案。

Carlo Zanocco
Reply   •   2 楼
Carlo Zanocco    7 年前

我希望这是你的正确方法,如果不是,告诉我,我们检查。

import csv

with open('Remarks_Drug.csv') as myFile:
    reader = csv.reader(myFile)
    products_list = list()
    filenames_list = list()

    for row in reader:
        products_list.append(row[0].lower().split("+")[0].strip())
        filenames_list.append(row[1])

    for index, product in enumerate(products_list):
        with open ('drug_output100.csv', 'a') as csvfile:
            fieldnames = ['product_patterns', 'filename']
            print(fieldnames)
            writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
            print(writer)
            writer.writerow({'product_patterns':product, 'filename':filenames_list[index]})
  1. 打开 备注.csv 文件并创建两个列表,其中存储 行值按您的喜好详细说明。
  2. 在产品列表上迭代并枚举它,以便您有一个索引 在文件名列表中使用。
  3. 打开输出文件并将结果附加到其中。

你也可以使用 pandas 以更快速、更聪明的方式详细说明csv文件。

这里是 熊猫 解决方案:

import pandas as pd

def select_real_product(string_to_elaborate):
    return string_to_elaborate.split('+')[0].strip()

df = pd.read_csv("Remarks_Drug.csv", delimiter=',', names=("product", "filename"))

df['product'] = df['product'].apply(select_real_product)

df.to_csv("drug_output100.csv", sep=',', na_rep='empty',index_label=False, index=False)