[英]Parsing values from CSV as strings into text file
我正在嘗試創建一個txt文件,其中包含有dir中的XML文件以及存在標簽時每個XML文件中的文本。
我無法使用以下命令將csv行作為變量讀取。 我試圖以多種方式提取所需的值,但仍然遇到障礙。
這是代碼:
container = raw_input("Choose a filename for your container:")
epub = zipfile.ZipFile( container + ".zip", 'w')
xmlinput = glob.glob('./*.xml')
def xmldrop(dir):
for r,d,f in os.walk(dir):
for files in f:
if files.endswith(".xml"):
dom=parse(os.path.join(r, files))
name = dom.getElementsByTagName('title')
with open('catalog.csv', 'a') as f:
f.write(files + "," + name[0].firstChild.nodeValue + "\n")
xmldrop("./")
line_number = 0
with open('catalog.csv', 'rb') as f:
mycsv = csv.reader(f)
mycsv = list(mycsv)
text = mycsv[line_number+1][1]
list_tpl = '''
<Container>
<FileName>
%(FileName)s
</FileName>
</Container>'''
FileName = ""
for i, xml in enumerate(xmlinput):
basename = os.path.basename(xml)
FileName += ('<Fileid="%i" filename="%s"> <title>%s</title> </Fileid>' %
(i+1, basename, text))
epub.writestr('list.txt', list_tpl % {
'FileName': FileName
})
如下面的輸出所示,我能夠成功地將信息提取到一個csv文件中:
file_1.xml,簡介
file_2.xml,評估
file_3.xml,查看
file_4.xml,目錄
但是生成的list.txt文件如下所示:
<Container>
<FileName>
<Fileid="1" filename="file_1.xml"> <title>Assessment</title></p> </Fileid>
<Fileid="2" filename="file_2.xml"> <title>Assessment</title></p> </Fileid>
<Fileid="3" filename="file_3.xml"> <title>Assessment</title></p> </Fileid>
<Fileid="4" filename="file_4.xml"> <title>Assessment</title></p> </Fileid>
</FileName>
</Container>
所需的輸出為:
<Container>
<FileName>
<Fileid="1" filename="file_1.xml"> <title>Intro</title> </Fileid>
<Fileid="2" filename="file_2.xml"> <title>Assessment</title> </Fileid>
<Fileid="3" filename="file_3.xml"> <title>Review</title> </Fileid>
<Fileid="4" filename="file_4.xml"> <title>Catalog</title> </Fileid>
</FileName>
</Container>
非常感謝您的協助。 我一直試圖將兩者配對超過一個星期,但沒有成功。
在打印出xml時,您不會更新text變量。 您只需將其設置為text = mycsv [line_number + 1] [1],但再也不會更新它,因此它會繼續輸出評估
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.