2012-05-09 41 views
0

我想檢查一個表中是否有數字值。爲什麼這個代碼在這個表格中找不到數字文本「699」?打印語句的值爲「無」。爲什麼BeautifulSoup不能在Python的表格中找到文本?

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 
+3

美麗的湯是一個HTML解析器。您的表格不是HTML代碼。 – 2012-05-09 20:35:48

+0

您應該將表格轉換成和​​。或者你可以使用正則表達式或字符串操作來解析它。 – quantum

回答

3

table.find()將搜索表內的所有標籤,但表中沒有標籤。只有一個字符串,恰好是一個ASCII表格,它不會被格式化爲HTML格式。

如果您想使用BeautifulSoup來解析表格,您需要先將其轉換爲HTML表格。否則,您可以使用table.string來獲取字符串本身並使用正則表達式解析該字符串。

+0

謝謝。這工作。 – myname

0

如果您通過a string as an argument into a Beautiful Soup find() method,美麗的湯尋找確切的字符串。傳入文本='699'將找到字符串「699」,但不是包含「699」的較長字符串。

要查找包含一個子字符串,可以使用自定義函數或正則表達式:

import re 
table.find(text=re.compile('699') 
table.find(text=lambda x: '699' in x) 
相關問題