长时间潜伏,第一次海报。我寻找了一些解决方案,但没有找到完全符合我需要的东西。
我的任务如下:示例输入文件
student.txt
内容:
John Smith
Harvard
4.00
1600“您的工作是编写一个名为dataCode(fileName)的python程序,该程序以文件的名称作为参数。它将打开文件并创建一个带有数据标记的新文件。上面示例文件的输出如下:
<applicant>
<name> John Smith </name>
<school> Harvard </school>
<gpa> 4.00 </gpa>
<sat> 1600 </sat>
</applicant>另外:输出文件的名称类似于正在打开的文件的名称。如果输入为student.txt,则out将为studentXML.txt
我试着用切片法(从另一张海报上借用这个):
tags = ['name', 'university', 'gpa', 'sat'] #Add desired
tags xml = ''#Add xml parsing with open("data.txt") as data:
#read data and filter out whitespace
lines = [line.strip() for line in data.readlines()]
#Generating xml tags via slicing
xml = '\n'.join(['<{0:s}> {1:s} </{0:s)>'.format(tag, value)
for tag, value in zip(tags, lines)])任何帮助都将不胜感激。我为没有更好地与编辑打交道而道歉。
追溯,使用"data.txt“作为文件。(与项目位于同一文件夹中):
回溯(最近一次调用):文件"c:\Users\Rokudo \Dropbox\22c005\ Project generation.py",第7行,在builtins.IOError: Errno 2中没有这样的文件或目录:'data.txt‘
在修正代码之后
with open(fileName) as data:
#Read data and filter out whitespace
lines = [line.strip() for line in data.readlines()]
# Generating xml tags via slicing
xml = '\n'.join(['<{0:s}> {1:s} </{0:s}>'.format(tag, value)
for tag, value in zip(tags, lines)])
print xml我收到打印声明的回电。
回溯:跟踪(最近一次调用):文件"c:\Users\foobar\XML generation.py",第15行,语法错误:打印xml: c:\Users\foobar\XML generation.py,第1513行
使用“返回xml”进行编辑,将其放入shell。一些格式化问题,将修补和看看会发生什么。
发布于 2013-12-13 22:11:39
您的代码存在一些问题,正如注释中提到的那样,很难判断它们是否在您实际执行的代码中,或者仅仅是在StackOverflow编辑器中发布所带来的格式化问题。
无论哪种方式,这都是代码的问题所在:
data.txt的相对路径。这个路径将相对于当前的工作目录,而不是Python脚本的位置。因此,请确保您在data.txt所在的同一目录下运行代码。或者,使用像open("/home/foo/data.txt")这样的绝对路径。tags之前的xml不属于那里,是语法错误with open("data.txt") as data:应该在它自己的行上,下面的代码缩进4个空格</{0:s)>中使用的是常规的结束括号,而不是卷曲括号修复后,您的代码将如下所示:
tags = ['name', 'university', 'gpa', 'sat'] #Add desired
xml = '' #Add xml parsing
with open("data.txt") as data:
#read data and filter out whitespace
lines = [line.strip() for line in data.readlines()]
#Generating xml tags via slicing
xml = '\n'.join(['<{0:s}> {1:s} </{0:s}>'.format(tag, value)
for tag, value in zip(tags, lines)])
print xml产额
<name> John Smith </name>
<university> Harvard </university>
<gpa> 4.00 </gpa>
<sat> 1600 </sat>因此,它几乎是有效的,您只需要用打开和关闭的applicant标记将xml括起来。
编辑:工作目录是在使用时启动程序(任何程序,而不仅仅是python)的地方。如果使用IDE,这完全取决于IDE处理/操作工作目录的方式,为此您需要查阅IDE的文档。
您可以从Python打印工作目录
import os
print os.getcwd()这将帮助您确定工作目录的位置,或者IDE将其设置为。
若要将文件名作为命令行参数传入,请使用
import sys
filename = sys.argv[1]然后像python generate.py data.txt一样从data.txt所在的目录调用脚本。
然而,你的任务是:
您的工作是编写一个称为
dataCode(fileName)的python程序。
python程序通常被认为是一个.py脚本,但是dataCode(fileName)是一个函数签名。因此,您可能应该将代码包装在这样的函数中:
def dataCode(fileName):
# ...
with open(fileName) as data
# ...https://stackoverflow.com/questions/20576656
复制相似问题