使用Python重复文本提取
我有下面的代码,我想用它来提取和之间的文本信息。它工作得很好,但是它只提取了第一个单元,而我想提取这些标记之间的所有文本单元。我试图用bash循环代码来实现这一点,但没有成功使用Python重复文本提取,python,xml,bash,loops,text-extraction,Python,Xml,Bash,Loops,Text Extraction,我有下面的代码,我想用它来提取和之间的文本信息。它工作得很好,但是它只提取了第一个单元,而我想提取这些标记之间的所有文本单元。我试图用bash循环代码来实现这一点,但没有成功 import os directory_path ='C:\\My_folder\\tmp' for files in os.listdir(directory_path): print(files) path_for_files = os.path.join(directory_path,
import os
directory_path ='C:\\My_folder\\tmp'
for files in os.listdir(directory_path):
print(files)
path_for_files = os.path.join(directory_path, files)
text = open(path_for_files, mode='r', encoding='utf-8').read()
starting_tag = '<font color='
ending_tag = '</font>'
ground = text[text.find(starting_tag):text.find(ending_tag)]
results_dir = 'C:\\My_folder\\tmp'
results_file = files[:-4] + 'txt'
path_for_files = os.path.join(results_dir, results_file)
open(path_for_files, mode='w', encoding='UTF-8').write(result)
您可以使用Beauty Soup的css选择器
>>> from bs4 import BeautifulSoup
>>> s = "foo <font color='#FF0000'> foobar </font> bar"
>>> soup = BeautifulSoup(s, 'lxml')
>>> for i in soup.select('font[color="#FF0000"]'):
print(i.text)
foobar
我想如果你想要不止一个,你应该使用像find_all这样的东西。这里是httml文件吗?如果用一个包含一堆html或xml文件的目录替换它,这会起作用吗?另外,您的脚本所做的是提取“FF0000”,我想提取颜色标记之间的突出显示文本:文本s是html文件的内容。我们必须对目录中的html/xml文件应用for循环。使用os.listdir/tmp/target_html/和文件读取方法。是的,我错过了字体标签的文本。>>root=PARSER.fromstrings>>>用于root.getiteratorfont中的i:。。。试试看。。。如果i.attrib[color]==FF0000:。。。打印i.text。。。除了:。。。谢谢你的回复。我对Python还是相当陌生的。你介意告诉我应该如何将你的建议或@Avinash Raj的建议与我的脚本结合起来吗?你可以使用任何代码,但在对两个测试用例使用代码测试之前有效/无效,或者你可以将示例代码与测试用例剪切,以便我可以查看并为你提供解决方案。vivekbsable@gmail.com/vivek.igp Skype ID导入lxml.html作为解析器def getFontTagTextcontent:Input:html内容。输出:字体标签文本列表列表。font\u text=[]root=PARSER.fromstringcontent for i in root.getiteratorfont:try:if i.attrib[color]==FF0000:font\u text.appendi.text除了:pass return font\u text我想我的问题不清楚,我把你弄糊涂了。我将把它作为我的另一个问题发布。谢谢。谢谢你的建议,但我在使用BeautifulSoup时遇到了麻烦-同样的老问题:ImportTerror:没有名为BeautifulSoup的模块,并且所有建议的解决方案都不适用于我。你需要导入BeautifulSoup。如果尚未安装,请安装。是的,我知道。我确实安装了它,但不知何故无法导入它。我读了不同的建议,但没有一个对我有用。我现在在想,问题可能是我的计算机上安装了三个Python版本。我从来没有在其他软件包上遇到过这样的问题。嗯,我设法在Cygwin上运行BeautifulSoup,但我遇到了一个错误:AttributeError:“str”对象没有属性“text”,我正在使用BeautifulSoup-3.2.1-唯一一个在我的机器上运行的。
You can also use lxml.html
>>> import lxml.html as PARSER
>>> s = "<html><body>foo <font color='#FF0000'> foobar </font> bar</body></html>"
>>> root = PARSER.fromstring(s)
>>> for i in root.getiterator("font"):
... try: i.attrib["color"]
... except:pass