繁体   English   中英

逐行读取XML文件中的数据

[英]Reading line by line the data from an XML file

我试图找到一个包含http或//或\\的链接,并在找到后用href标记包围,但是当从xml读取的数据逐行读取时。我看到输出是每个字母都分开的。参见下面的输入和输出。.有人可以建议我要去哪里错吗?

 INput:-http://pastebin.com/p9H8GQt4
 Currentoutput:- http://pastebin.com/7428jK63

sanity_results = sanity_results.replace('\n','<br>\n')
return sanity_results

def main ():
resultslis=[]
xmlfile = open('results.xml','r')
contents = xmlfile.read()
testresults=getsanityresults(contents)
#print testresults
for line in testresults:
    #print line
    line = line.strip()
    #print line
    line = re.sub(r'(http://[^\s]+|//[^\s]+|\\\\[^\s]+)', r'<a href="\1">\1</a>', line)
    print line       
    resultslis.append(line)
print resultslis

if __name__ == '__main__':
main()

您想使用XML解析器,例如

  • 元素
  • xml文件
  • 极小

等用于解析任何类型的XML文件。 自己解析XML-特别是逐行是容易出错的。 特别是正则表达式的使用是按设计破坏的。 不要那样做

聪明一点,改用XML分析器。

您正在遍历字符串,而不是遍历文件。

如果要遍历字符串中的行,请使用str.splitlines

>>> text ='''first
... second
... '''
>>> for line in text.splitlines():
...     print(line)
... 
first
second
>>> for char in text:
...     print(char)
... 
f
i
r
s
t


s
e
c
o
n
d

无论如何,我建议您使用XML解析器。 stdlib已经提供了一个,周围还有很多其他的库。

问题是这一行:

contents = xmlfile.read()

返回一个字符串; 因此,迭代操作针对字符。 用readlines()代替read(),就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM