0

テーブルに数値が入っているか確認しようとしています。このコードがこの表に数値テキスト「699」を見つけられないのはなぜですか?printステートメントは「None」の値を示します。

html = """

<table>
December 31,                            1997     1996     1995     1994     1993
Allowance for credit losses--loans       699      773
Allowance for credit losses--
  trading assets                         285      190
Allowance for credit losses--
  other liabilities                       13       10
- --------------------------------------------------------------------------------
   Total                              $  997   $  973   $  992   $1,252   $1,324
================================================================================
</table>

"""

soup = BeautifulSoup(''.join(html))
table = soup.find('table')
test = table.find(text='699')
print test
4

2 に答える 2

3

table.find()テーブル内のすべてのタグを検索しますが、テーブル内にタグはありません。たまたまHTMLとしてフォーマットされていないASCIIテーブルである文字列だけがあります。

BeautifulSoup を使用してテーブルを解析する場合は、最初にそれを HTML テーブルに変換する必要があります。それ以外の場合はtable.string、文字列自体を取得して正規表現で解析するために使用できます。

于 2012-05-09T20:42:34.683 に答える
0

Beautiful Soup の find() メソッドに文字列を引数として渡すと、Beautiful Soup はその正確な文字列を探します。text='699' を渡すと文字列 "699" が見つかりますが、"699" を含む長い文字列は見つかりません。

部分文字列を含む文字列を見つけるには、カスタム関数または正規表現を使用できます。

 import re
 table.find(text=re.compile('699')
 table.find(text=lambda x: '699' in x)
于 2012-05-09T22:53:35.367 に答える