如果字符串包含逗号(,)空格和其他字符,如(

2024-09-30 01:28:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有字符串:

<td class="cspan">Proximates</td>\n\t<td style="text-align:left">Total lipid (fat)\n\t\t\n\t\t\n\t\t</td>\n\t\t\n\t\t<td>g</td>\n\t\t\n\t\t\t<td style="text-align:right;">78.30</td>

我需要一个正则表达式。我试过很多类似的方法:

Total lipid\(fat\)\\n\\t\\t\\n\\t\\t\\n\\t\\t\<\/td\>\\n\\t\\t\\n\\t\\t\<td\>g\<\/td\>\\n\\t\\t\\n\\t\\t\\t\<td style\=\"text\-align\:right\;\"\>(.*?)\<\/td\>

我还有另外一个字符串:

<td style="text-align:left">Vitamin C, total ascorbic acid\n\t\t\n\t\t\n\t\t</td>\n\t\t\n\t\t<td>mg</td>\n\t\t\n\t\t\t<td style="text-align:right;">0.0</td>

我试过很多正则表达式,比如:

Vitamin C\, total ascorbic acid\\n\\t\\t\\n\\t\\t\\n\\t\\t\<\/td\>\\n\\t\\t\\n\\t\\t\<td\>mg\<\/td\>\\n\\t\\t\\n\\t\\t\\t\<td style\=\"text\-align\:right\;\"\>(.*?)\<\/td\>

我的第三根弦是:

<td style="text-align:left">Vitamin B-12\n\t\t\n\t\t\n\t\t</td>\n\t\t\n\t\t<td>\xb5g</td>\n\t\t\n\t\t\t<td style="text-align:right;">0.07</td>

我试过这个,而且更像这样:

data = re.search('Vitamin B\-12\\n\\t\\t\\n\\t\\t\\n\\t\\t\<\/td\>\\n\\t\\t\\n\\t\\t\<td\>µg\<\/td\>\\n\\t\\t\\n\\t\\t\\t\<td style\=\"text\-align\:right\;\"\>(.*?)\<\/td\>',tb)

从这些字符串中,我试图得到以下数据:

  1. 从第一个字符串是:78.30
  2. 从第二个开始:0.0
  3. 第三起:0.07

我需要正则表达式,就像我上面写的,只是一些小的改动,因为我知道我遗漏了一些东西


Tags: 字符串textrightstyleleftfattdtotal
1条回答
网友
1楼 · 发布于 2024-09-30 01:28:27

正如您所发现的,XML(HTML)和regex不能很好地混合。然而,当使用BeautifulSoup时,这个问题非常直接:

代码:

soup = BeautifulSoup(row)
print soup.findAll('td')[-1].text

测试代码:

data = (
    """
    <td class="cspan">Proximates</td>
    <td style="text-align:left">Total lipid (fat)


    </td>
    <td>g</td>
        <td style="text-align:right;">78.30</td>
    """,
    """
    <td style="text-align:left">Vitamin C, total ascorbic acid


    </td>
    <td>mg</td>
    <td style="text-align:right;">0.0</td> "
    """,
    """
    <td style="text-align:left">Vitamin B-12


    </td>
    <td>\xb5g</td>
    <td style="text-align:right;">0.07</td> "
    """,
)


from bs4 import BeautifulSoup
for row in data:
    soup = BeautifulSoup(row)
    print soup.findAll('td')[-1].text

结果:

78.30
0.0
0.07

相关问题 更多 >

    热门问题