ここでコミュニティーのメンバーがここで作成したコードをビルドすると、テキストファイルから辞書の値を取得し、その値を調べてファイルのリストを探す関数を作成するのに役立ちました。これは、同じシートに見つかったすべての値を追加するコードでした。forループ内の項目に対して関数が実行されるたびに異なるファイルを作成する方法は?
import csv
import glob
import ast
from os.path import isfile
from lxml import etree
def look_for_speaker_in_files(speakerAttrib):
speakerDict = ast.literal_eval(speakerAttrib)
l_file_exists = False
if isfile("allspeakers.csv"):
l_file_exists = True
c = csv.writer(open("allspeakers.csv","a"))
if not l_file_exists:
c.writerow(["Name", "Filename", "Text"])
lparser = etree.XMLParser(recover=True)
for cr_file in glob.iglob('parsed/*.xml'):
try:
tree = etree.parse(cr_file,parser=lparser)
for node in tree.iter('speaking'):
if node.keys() == speakerDict.keys():
c.writerow([node.attrib, cr_file, node.text])
else:
continue
except:
print "bad string " + cr_file
raise
def main():
with open("speaking-basic.txt","r") as speaker_list:
for x in speaker_list:
print x
look_for_speaker_in_files(x)
if __name__ == "__main__":
main()
は、今私は、テキストファイルからその項目に、テキストファイルから項目ごとに別のファイルを作成し、ファイルのみのノードの一致を堆積させるために探しています。
私は以下のコードを試してみました。ファイルを読み取ってファイル名の引数と項目の引数の両方を検索する関数を変更しました。次に、リストから項目を読み込んでリストから項目を取り出すコードを変更し、ファイル内の辞書項目の値であるファイル名を作成するようにしました。
import csv
import glob
import ast
from os.path import isfile
from lxml import etree
def look_for_speaker_in_files(speakerAttrib,file_name):
speakerDict = ast.literal_eval(speakerAttrib)
l_file_exists = False
if isfile(file_name + ".csv"):
l_file_exists = True
c = csv.writer(open(file_name + ".csv","a"))
print c
if not l_file_exists:
c.writerow(["Name", "Filename", "Text"])
lparser = etree.XMLParser(recover=True)
for cr_file in glob.iglob('parsed/*.xml'):
try:
tree = etree.parse(cr_file,parser=lparser)
for node in tree.iter('speaking'):
if node.keys() == speakerDict.keys():
c.writerow([node.attrib, cr_file, node.text])
else:
continue
except:
print "bad string " + cr_file
raise
def main():
with open("speaking.txt","r") as speaker_list:
for x in speaker_list:
print x
dictx = ast.literal_eval(x)
valuex = str(dictx.values()).format()
print valuex
look_for_speaker_in_files(x,valuex)
if __name__ == "__main__":
main()
私も同じ単一の引数にファイルの機能を見を維持しようとしましたが、その引数からファイル名を思い付いた変数を追加するだけでなく、動作しませんでしたという。これらのコードは、ファイルを作成しながら
import csv
import glob
import ast
from os.path import isfile
from lxml import etree
def look_for_speaker_in_files(speakerAttrib):
speakerDict = ast.literal_eval(speakerAttrib)
file_name = str(speakerDict.values()).format()
l_file_exists = False
if isfile(file_name + ".csv"):
l_file_exists = True
c = csv.writer(open(file_name + ".csv","a"))
if not l_file_exists:
c.writerow(["Name", "Filename", "Text"])
lparser = etree.XMLParser(recover=True)
for cr_file in glob.iglob('parsed/*.xml'):
try:
tree = etree.parse(cr_file,parser=lparser)
for node in tree.iter('speaking'):
if node.keys() == speakerDict.keys():
c.writerow([node.attrib, cr_file, node.text])
else:
continue
except:
print "bad string " + cr_file
raise
def main():
with open("speaking-basic.txt","r") as speaker_list:
for x in speaker_list:
print x
look_for_speaker_in_files(x)
if __name__ == "__main__":
main()
、それにすべての私のfutzingと私はそれを得るのいずれかのファイルが、列のヘッダーに何も入れていない、またはXMLファイルからすべてのスピーカーを置くことができるように見えますそれぞれの中に、私がその機能に入れたものだけではありません。また、私はそれの周りに['']のないファイル名を作成することはできません。
私は、XML関数が通って、私はここにGoogleのリンクで探しています値を持つテキストファイル検索しているファイルがあります。 https://drive.google.com/open?id=0B7lGA34vOZItREhRbmF6Z3YtTnM
この上の任意のヘルプは、スーパーいただければ幸いです、ありがとうございました!
ああ、それはそれを修正するように見える、ありがとう –
クール。また、他の質問に対する答えを、あなたがそれを打ち切ったので、-15点を与えてくれたので、私は親切に答えを選んでください。私はあなたがundertandを望む:-)。 – pmaniyan