- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试比较两个XML文件中特定标记的所有实例的文本。我正在使用的OCR引擎在<OCRCharacters>...</OCRCharacters>
标记中输出带有所有ocr chraracters的xml文件。
我正在使用python 2.7.11和漂亮的汤4(bs4)。从终端,我以两个xml文件名作为参数调用我的python程序。
我想为每个文件提取<OCRCharacters>
标记中的所有字符串,将它们与difflib逐行比较,然后编写一个具有差异的新文件。
我使用$ python parse_xml_file.py file1.xml file2.xml
从终端调用程序。
下面的代码打开每个文件,并在标记<OCRCharacters>
中打印每个字符串。如何将bs4生成的对象转换为difflib可以使用的字符串。我愿意采用更好的方法(使用python)来做到这一点。
import sys
with open(sys.argv[1], "r") as f1:
xml_doc_1 = f1.read()
with open(sys.argv[2], "r") as f2:
xml_doc_2 = f2.read()
from bs4 import BeautifulSoup
soup1 = BeautifulSoup(xml_doc_1, 'xml')
soup2 = BeautifulSoup(xml_doc_2, 'xml')
print("#####################",sys.argv[1],"#####################")
for tag in soup1.find_all('OCRCharacters'):
print(repr(tag.string))
temp1 = repr(tag.string)
print(temp1)
print("#####################",sys.argv[2],"#####################")
for tag in soup2.find_all('OCRCharacters'):
print(repr(tag.string))
temp2 = repr(tag.string)
最佳答案
您可以尝试以下方法:
import sys
import difflib
from bs4 import BeautifulSoup
text = [[],[]]
files = []
soups = []
for i, arg in enumerate(sys.argv[1:]):
files.append(open(arg, "r").read())
soups.append(BeautifulSoup(files[i], 'xml'))
for tag_text in soups[i].find_all('OCRCharacters'):
text[i].append(''.join(tag_text))
for first_string, second_string in zip(text[0], text[1]):
d = difflib.Differ()
diff = d.compare(first_string.splitlines(), second_string.splitlines())
print '\n'.join(diff)
<node>
<OCRCharacters>text1_1</OCRCharacters>
<OCRCharacters>text1_2</OCRCharacters>
<OCRCharacters>Same Value</OCRCharacters>
</node>
<node>
<OCRCharacters>text2_1</OCRCharacters>
<OCRCharacters>text2_2</OCRCharacters>
<OCRCharacters>Same Value</OCRCharacters>
</node>
- text1_1
? ^
+ text2_1
? ^
- text1_2
? ^
+ text2_2
? ^
Same Value
关于python-2.7 - 将diff与漂亮的汤对象一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35704516/
我正在努力学习 Ruby Koans 以尝试学习 Ruby,到目前为止一切顺利。我已经得到了贪婪的公案,在撰写本文时它是 183。我有一个可行的解决方案,但我觉得我只是拼凑了一堆 if/then 逻辑
我正在尝试创建一个扩展 boost 图形库行为的类。我希望我的类是一个模板,用户提供一个类型(类),用于在每个顶点存储属性。那只是背景。我正在努力创建一个更简洁的 typedef 来定义我的新类。 基
我正在使用 suds 包从网站查询 API,从他们的网站返回的数据如下所示: (1)。谁能告诉我这是什么格式? (2)。如果是这样,解析数据的最简单方法是什么?我已经使用 BeautifulSoup
所以我有一个看起来像这样的 html 文档: Speaker Name: Title of Talk | Subtitle | website.com ... [Other Stuff] Poste
我是一名优秀的程序员,十分优秀!