私は本当に立ち往生しています。ここでの作業は、5000レコードのCSVの日付をフィルタリングして特定の日付範囲を検索し、昇順に並べ替えてから、文章を作成する別の列のフィールドを取得することです。私は正常に日付を並べ替えることができましたし、それらを注文しますが、私の問題は今、私はその行に対応する単語を取得する方法を知らないということです。コードは次のとおりです。条件に基づいてCSVファイル内の単語を検索する必要があります
#/usr/bin/python3
import csv
import time
def finder():
with open('sample_data.csv', encoding="utf8") as csvfile:
reader = csv.DictReader(csvfile)
r = [] # This will hold our ID numbers for rows
c = [] # This will hold our initial dates that are filtered out from the main csv
l = [] # This will hold our sorted dates from c
w = [] # This will hold our words
sentence = '' #This will be our sentence
# Filter out created_at dates we don't care about
def filterDates():
for row in reader:
createdOn = float(row['created_at'])
d = time.strftime('%Y-%m-%d', time.localtime(createdOn)) # Converts dates
if d < '2014-06-22':
pass
else:
c.append(d)
filterDates()
def sort(c):
for i in c:
if i > '2014-06-22' and i < '2014-07-22':
l.append(i)
l.sort(reverse=False)
else:
pass
sort(c)
def findWords(l):
for row in reader:
words = row['word']
for x in range(l):
print(words[0])
findWords(l)
finder()
私はこのコードがおそらくお粗末なものであると知っています。私はそれを仕事の挑戦と見て、簡単にやり遂げることができると思っていたが、明らかに私のPythonはあまりにも嗅ぎどころではない。以前はPython CSVを使っていませんでした。私はこの仕事にはもはや応募しないバットからすぐに言いますが、それが分からなければ私は狂ってしまいます。私はすでに別のものを試して何時間も過ごしました。問題は、正しい日付の行を取って単語を得る方法にあります。
すべての提案とお手伝いがあります。自分の正気のために、私はこれを理解する必要があります。
おかげで、 RDD
データサンプル:
id created_at first_name last_name email gender company currency word drug_brand drug_name drug_company pill_color frequency token keywords
1 1309380645 Stephanie Franklin [email protected] Female Latz IDR transitional SUNLEYA Age minimizing sun care AVOBENZONE, OCTINOXATE, OCTISALATE, OXYBENZONE C.F.E.B. Sisley Maroon Yearly ______T______h__e________ _______N__e__z_____p______e_____________d______i______a_____n__ _____h__i__v__e___-_____m___i____n__d__ _____________f ________c_______h__a__________s_.__ _Z________a_____l_____g________o__._ est risus auctor sed tristique in
2 1237178109 Michelle Fowler [email protected] Female Skipstorm EUR flexibility Medulla Arnica Medulla Arnica Uriel Pharmacy Inc. Yellow Once _____ morbi vestibulum velit id
3 1303585711 Betty Barnes [email protected] Female Skibox IDR workforce Rash Relief Zinc Oxide Dimethicone Touchless Care Concepts LLC Purple Monthly ___ ac est lacinia
4 1231175716 Jerry Rogers [email protected] Male Cogibox IDR content-based up and up acid controller complete Famotidine, Calcium Carbonate, Magnesium Hydroxide Target Corporation Maroon Daily NIL augue a suscipit nulla elit
5 1236709011 Harry Garrett [email protected] Male Yotz RUB coherent Vistaril HYDROXYZINE PAMOATE Pfizer Laboratories Div Pfizer Inc Orange Never �_nb_l_ _u___ __olop __ __oq_l _n _unp_p__u_ _od___ po_sn__ op p_s '__l_ _u__s_d_p_ _n_____suo_ '____ __s _olop _nsd_ ___o_ morbi ut odio cras
6 1400030214 Lori Martin [email protected] Female Aivee EUR software Fluorouracil Fluorouracil Taro Pharmaceutical Industries Ltd. Pink Daily _ dui vel sem
7 1368791435 Joe Turner [email protected] Male Mycat IRR tangible Sulfacetamide Sodium Sulfacetamide Sodium Paddock Laboratories, LLC Aquamarine Often 1;DROP TABLE users nulla facilisi cras non velit
8 1394919241 Ruth Bryant [email protected] Female Browsecat IDR incremental Pollens - Trees, Mesquite, Prosopis juliflora Mesquite, Prosopis juliflora Jubilant HollisterStier LLC Aquamarine Weekly ___________ et magnis dis
9 1352948920 Cynthia Lopez [email protected] Female Twitterbeat USD Up-sized Ideal Flawless Octinoxate, Titanium Dioxide Avon Products, Inc Red Daily (_�_�___ ___) purus eu magna
10 1319910259 Phillip Ross [email protected] Male Buzzshare VEF data-warehouse Serotonin Serotonin BioActive Nutritional Orange Weekly __ vel sem
わかりましたので、いくつかは、ウェストリーホワイトから大きな助けを微調整した後、私はこの機能を得ることができました!私は、それが仮定されていることをやっている1つのネストされた関数に凝縮している!コードは次のとおりです。
#/usr/bin/python3
import csv
import time
def finder():
with open('sample_data.csv', 'r', encoding='latin-1') as csvfile:
reader = csv.DictReader(csvfile)
def dates(reader):
# Set up variables
date_range = []
sentence = []
# Initiate iteration through CSV
for row in reader:
createdOn = float(row['created_at'])
words = str(row['word'])
d = time.strftime('%Y-%m-%d', time.localtime(createdOn)) # Converts dates
if d >= '2014-06-22' and d <= '2014-07-22':
date_range.append(d)
date_range.sort()
for word in words:
if d in date_range:
sentence.append(word)
print(sentence)
dates(reader)
finder()
残っている問題は1つだけです。 sentence[]
が付加すると、各文字を1つずつ追加します。私はそれらをすべて一緒に組み合わせることなく、CSV列の単語に文字を組み合わせる方法を知りません。何か案は?
ありがとうございます!
これを追加しますか閉鎖する必要はありません... –
ファイルを添付する方法はありますか?可能であれば、CSV全体を添付します。それは単なるサンプルデータです。 また、閉鎖を必要としないとはどういう意味ですか?申し訳ありませんが、私のPythonは素晴らしいことではありません。ちょうど中断後にそれに戻ってくる。 – RedDeadVolvo
正直なところ、ヘッダーと最初の2行だけが必要です。クロージャに関しては、関数内で関数を定義する理由を尋ねています。次に、関数内で関数を呼び出すだけです。意味がありません。これらの機能を再利用することはできません。 –