0

基本上,我想从文本文件中提取字符串“AAA”、“BBB”、“CCC”、“DDD”......

...... (other text goes here).....
<TD align="left" class=texttd><font class='textfont'>AAA</font></TD>
..... (useless text here).....
<TD align="left" class=texttd><font class='textfont'>BBB</font></TD>
....(more text).....
<TD align="left" class=texttd><font class='textfont'>CCC</font></TD>
<TD align="left" class=texttd><font class='textfont'>DDD</font></TD>
......(more text).....

如果我这样做,我想要类似的东西:-

数据 = foo("file.txt")

我得到: -

数据 = ['AAA','BBB','CCC','DDD']

最好的方法是什么?我的文件不大...

基本上,我想从这个文件中提取“剩余的上传数据传输” HTML 中看起来像这样

4

5 回答 5

2

您可以编写一个正则表达式,但它会在某种程度上“解析”HTML。为 HTML 编写正则表达式的问题是 HTML 是一团糟。它很少是完美的,当您依赖它获取数据时,这会导致问题。

我个人会使用 BeautifulSoup。它确实比你要求的要多,而且在努力的超分数上也是如此。

于 2010-03-17T17:48:54.757 回答
0

你想要BeautifulSoup

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(your_file)

soup.find("font", "textfont")
于 2010-03-17T17:40:08.290 回答
0
def foo():
    input_file = open("myfile.txt", 'r')
    input = ''.join(input_file.readlines())

    looking_for = ['AAA', 'BBB', 'CCC', 'DDD']
    have = []

    for thing in looking_for:
        if thing in input:
            have.append(thing)
    return have
于 2010-03-17T17:50:55.847 回答
0

在这种情况下,为它尝试正则表达式(这将是真正拥有的),使用预先编写的库,或者使用f = open() f.read()你自己的解析器自己做。

于 2010-03-17T17:51:17.017 回答
0

如果您只想从 HTML 文档中的所有标签中获取数据,同时删除所有标签本身,您可以执行以下操作:

import HTMLParser

class DataOnlyParser(HTMLParser.HTMLParser):
    def parse(self, text):
        self.result = []
        self.feed(text)
        self.close()
        return self.result

    def handle_data(self, data):
        data = data.strip()
        if data:
            self.result.append(data)

p = DataOnlyParser()

data = """
<TD align="left" class=texttd><font class='textfont'>AAA</font></TD>
<TD align="left" class=texttd><font class='textfont'>BBB</font></TD>
<TD align="left" class=texttd><font class='textfont'>CCC</font></TD>
<TD align="left" class=texttd><font class='textfont'>DDD</font></TD>
"""

print p.parse(data)
# ['AAA', 'BBB', 'CCC', 'DDD']

但是,如果您的选择标准更复杂,和/或输入格式错误,那么使用 lxml 之类的库可能会更好。

您不想使用正则表达式来“解析”html。见这里

于 2010-03-17T18:13:01.350 回答