Remarks_Drug.csv
という名前のcsvを開いています。このcsvには、製品名が含まれ、ファイル名が連続した列にマップされています。 +
文字の後のすべての文字列コンテンツを削除するために、製品列に対していくつかの操作を行っています。 +
文字から文字列を削除した後、結果をproduct_patterns
という変数に格納しています。
ここで、新しいcsv
を開き、forループからの出力を2つの列に書き込みます。最初の列にはproduct_patterns
が含まれ、2番目の列には対応する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})
サンプル入力:
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
これがあなたにとって正しい方法であることを願っています。そうでない場合は、教えてください。確認します。
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]})
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)
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
sを使用して大きなpanda
ファイルを処理する場合は、パフォーマンスとメモリの点で便利で効率的です。これは、上記の代替ソリューションにすぎません。