che*_*ate 5 python csv string for-loop export-to-csv
我正在打开一个名为的 csv Remarks_Drug.csv,其中包含连续列中的产品名称和映射
文件名。我正在对产品列进行一些操作,以删除字符后的所有字符串内容+。从+
字符中剥离字符串后,我将结果存储在一个名为product_patterns.
现在我正在打开一个新的csv,我想将 for 循环的输出写入两列,第一列包含product_patterns,第二列包含相应的filenames.
我现在得到的输出只是output csv我正在寻找的最后一行。我想我没有正确循环,所以每一行product_patterns和文件名都被附加到output 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})
Run Code Online (Sandbox Code Playgroud)
样本输入:
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
Run Code Online (Sandbox Code Playgroud)
我希望这对您来说是正确的方法,如果不正确,请告诉我,我们会检查。
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]})
Run Code Online (Sandbox Code Playgroud)
您还可以使用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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14655 次 |
| 最近记录: |