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

REGEXを作成することもできますが、HTMLをある程度「解析」することになります。HTMLの正規表現を書く際の問題は、HTMLが混乱していることです。完璧になることはめったになく、データを信頼する場合に問題が発生します。

私は個人的にBeautifulSoupを使用します。それはあなたが求めている以上のことをしますが、努力のほんの一部でもあります。

于 2010-03-17T17:48:54.757 に答える
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 に答える
0

あなたが欲しいBeautifulSoup

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(your_file)

soup.find("font", "textfont")
于 2010-03-17T17:40:08.290 に答える