【问题标题】:BeautifulSoup my for loop is printing the data in separate lines. How do i print it in 1 lineBeautifulSoup 我的 for 循环在单独的行中打印数据。我如何在 1 行中打印它
【发布时间】:2016-05-15 05:42:10
【问题描述】:

我有以下来自 html 文件的示例 HTML 表。
我正在尝试从

<table>
        <tr>
            <th>Class</th>
            <th class="failed">Fail</th>
            <th class="failed">Error</th>
            <th>Skip</th>
            <th>Success</th>
            <th>Total</th>
        </tr>
            <tr>
                <td>Regression_TestCase.RegressionProject_TestCase2.RegressionProject_TestCase2</td>
                <td class="failed">1</td>
                <td class="failed">9</td>
                <td>0</td>
                <td>219</td>
                <td>229</td>
            </tr>
        <tr>
            <td><strong>Total</strong></td>
            <td class="failed">1</td>
            <td class="failed">9</td>
            <td>0</td>
            <td>219</td>
            <td>229</td>
        </tr>
    </table>

我的 for 循环是:

def extract_data_from_report():
    html_report = open(r"E:\projects\ClearCore\ClearCore Regression\selenium_regression_test_5_1_1\TestReport\SeleniumTestReport.html",'r').read()
    soup = BeautifulSoup(html_report, "html.parser")
    print soup.find_all('th')
    print soup.find_all('td')

    for item in soup.find_all('th'):
        print item.text

输出是:

Class
Fail
Error
Skip
Success
Total

我希望输出是这样的:

Class Fail Error Skip Success Total

如何在 1 行中全部打印出来?

谢谢,里亚兹

【问题讨论】:

    标签: python-2.7 beautifulsoup


    【解决方案1】:

    默认情况下,每当您有 print 语句时,Python 都会添加一个换行符。如果您在要打印的项目列表的末尾添加一个逗号,Python 将改为在末尾添加一个空格,并且没有换行符。你需要做的是:

    替换

    print item.text
    

    print item.text,
    

    在打印列表中的所有内容后(即在函数的最后),您还需要一个 print。这会将终止换行符放在列表的末尾。

    【讨论】:

    • 你知道我如何排除显示 Total 的 标签吗?我不希望这部分打印出来
    • 我的代码是:td = soup.find_all('td') for item in td: print item.text,
    • @RiazLadhani 您要打印td 标记的内容,第三个tr 中的内容除外(选择tr,特别是因为它的第一个td 包含Total)?
    • 是的,没错。我认为您可以在索引列表时使用索引。我不知道实现这个的语法
    • 这会更复杂。您可能想要做的是获取tr = soup.find_all('tr'),使用tr.firstChild().tag == 'td''Total' in tr.firstChild().contents 测试它的第一个孩子是否是包含Total 的td,如果不是,则打印它的孩子。跨度>
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签