私はフォルダー内のすべてのXMLファイルを調べ、ノード属性(話者名)を探し、csvファイルの行に書き込む関数を作成しました。注意してください、現時点では、それらはすべて同じcsvファイルに追加されますが、私は次のステップを見つけた後にファイル名を変更するようにしています。PythonでテキストまたはCSVファイル内のリスト内のすべての項目に関数を適用するにはどうすればよいですか?
私がやってみようとしていた次のステップは、テキストファイルのリスト(これらのスピーカー名をCSVファイルと辞書のリストを試してみました)からそれらのスピーカー名を指定して、それらのスピーカー名は個別に
私はforループの反復を、別のforループの中のアイテムのセットを使って繰り返すことを考えました。これは、異なるセットのアイテムを反復することは、ちょっとした気分でした。私はそれを使って予備テストを行いましたその心配が間違っていることを証明していない。
このリストの項目のいずれかに、関数の引数として個別に貼り付けると機能します。私が試みた方法のいずれかを使ってアクセスした後にリストを印刷すると、それは機能しますが、私は2つを話すことができません。
私は以下の方法で各項目に関数を適用しようとしましたが、私はexcept文に与えたエラーを出力し、csvのヘッダー列に書き込みますデータがすでにその周りに中括弧を持っていたので)、それは、少なくとも機能にアクセスするのITの一体のための
speaker_list = open("UAS_Speakers.csv","r").readlines()
for item in speaker_list:
look_for_speaker_in_files(item)
または
with open("speaking.txt","r") as f:
for x in f:
look_for_speaker_in_files(x)
を知って、私も辞書のリストとしてそれを開こうとしました。変化なし。
def main():
with open("speaking.py","r") as speaker_list:
for x in speaker_list:
look_for_speaker_in_files(x)
if __name__ == "__main__":
main()
私がもしわからない:
speaker_list = open("speaking.py","r")
for x in speaker_list:
look_for_speaker_in_files(x)
は、私はまた、私はそのリストからURLを取得し、それらにurllibは機能のカップルを実行していたスクリプトをモデルに、これは試してみました問題は、私はこれらのいずれかを行う際に、全リストは、すべてを一度に関数に供給されているが、場合にfucntion自体に何か問題があると、作業からこれを防止すること、それはここにあるある:
def look_for_speaker_in_files(speakerAttrib):
c = csv.writer(open("allspeakers.csv","w"))
c.writerow(["Name", "Filename", "Text"])
for cr_file in glob.iglob('parsed/*.xml'):
try:
tree = etree.parse(cr_file)
for node in tree.iter('speaking'):
if node.attrib == speakerAttrib:
c.writerow([node.attrib, cr_file, node.text])
else:
continue
except:
print "bad string " + cr_file
continue
どれでも彼lpはこれで大いに感謝しています。そうでなければ、私はOpenRefineから手作業でこれを整理したり、数百人のスプレッドシートからコピー&ペーストしたりします。その考えが私の眼球を燃やします。
サンプルリスト項目:
{'name': 'Mr. BEGICH'}
{'name': 'The SPEAKER pro tempore (Mr. Miller of Florida)'}
{'name': 'The Acting CHAIR'}
{'name': 'Mr. McKINLEY'}
{'quote': 'true', 'speaker': 'recorder'}
{'name': 'Mr. WAXMAN'}
{'name': 'Mr. MORAN'}
{'name': 'Mr. McKEON'}
{'quote': 'true', 'speaker': 'The Acting CHAIR'}
{'name': 'Mr. RIGELL'}
{'name': 'Mr. SMITH of Washington'}
{'name': 'Mr. KILMER'}
{'name': 'Mr. LAMBORN'}
{'name': 'Mr. CLEAVER'}
{'name': 'Mr. MICA'}
{'name': 'Ms. SPEIER'}
{'name': 'Mrs. ELLMERS'}
サンプルファイルこのフォルダにあります。 https://drive.google.com/folderview?id=0B7lGA34vOZItREhRbmF6Z3YtTnM&usp=sharing
クエリに記載されているさまざまな入力ファイル内のサンプルデータを入力してください。 – pmaniyan
もちろん、上記を参照してください。 –
主な問題は、speakerAttribを文字列として渡して比較していたことでした。私はちょうどそれを辞書変数に変換しました。 2つ目は、lxml要素ではなく、ノードの属性をリストとして取得することでした。 – pmaniyan