Python BeautifulSoup Won';t从XML返回标记

Python BeautifulSoup Won';t从XML返回标记,python,xml,parsing,beautifulsoup,xml-parsing,Python,Xml,Parsing,Beautifulsoup,Xml Parsing,给定我的工作目录中名为test.XML的以下XML: <workbook> <style> <style-rule element='worksheet'> <format attr='font-family' value='Tahoma' /> <format attr='font-size' value='15' /> <for

给定我的工作目录中名为test.XML的以下XML:

<workbook>
    <style>
          <style-rule element='worksheet'>
            <format attr='font-family' value='Tahoma' />
            <format attr='font-size' value='15' />
            <format attr='font-weight' value='bold' />
            <format attr='color' value='#ffbe7d' />
          </style-rule>
    </style>
</workbook>

由于元素名中存在连字符,我知道使用find命令,并且在xml文件的其他连字符部分中成功地使用了该技术。但是,由于我不知道的某些原因,这个实例给了我一些问题。

问题不是因为连字符,如果您尝试打印样式标记的内部文本,出于某种原因,您将获得字符串类型的样式规则

我的猜测是,样式标记通常包含在bs4中被视为字符串的内容中,但这里您将其用作html容器

解决方法:

from bs4 import BeautifulSoup
import os

soup = BeautifulSoup(text)
soup = BeautifulSoup(soup.find('style').text)

for format in soup.select('style-rule > format'):
  print(format)
演示:

from bs4 import BeautifulSoup
import os

soup = BeautifulSoup(text)
soup = BeautifulSoup(soup.find('style').text)

for format in soup.select('style-rule > format'):
  print(format)