在PyCharm中格式化HTML样式

时间:2016-08-31 13:56:37

标签: python html python-2.7 pycharm

如何自动生成标签以在生成的HTML文件上获得正确的树视图?

例如,我有一个这样的代码:

    def creating_html(self):
    something ='''<table style="width:100%">
    <tr>
        <th>Firstname</th>
        <th>Lastname</th>
        <th>Age</th>
    </tr>
    <tr>
        <td>Jill</td>
        <td>Smith</td>
        <td>50</td>
    </tr>
    <tr>
        <td>Eve</td>
        <td>Jackson</td>
        <td>94</td>
    </tr>
</table>
'''
    file.write(something)

此代码将使用适当的选项卡等生成代码但我觉得我的代码非常混乱,因此我也认为我浪费时间检查一个好的格式。所以我在考虑这样的事情,让我的代码更清洁。

    def creating_html(self):
    something ='''
            <table style="width:100%">
            <tr>
            <th>Firstname</th>
            <th>Lastname</th>
            <th>Age</th>
            </tr>
            <tr>
            <td>Jill</td>
            <td>Smith</td>
            <td>50</td>
            </tr>
            <tr>
            <td>Eve</td>
            <td>Jackson</td>
            <td>94</td>
            </tr>
            </table>
            '''
    file.write(something)

但现在格式无效。

我正在寻找一个好的解决方案,其中一个只是在用PyCharm生成它之后打开这个HTML文件并使用快捷键 Ctrl + Alt + L 。我正在寻找一种自动完成的解决方案。

2 个答案:

答案 0 :(得分:2)

您可以使用Beautiful Poup 4将其与pip一起安装并使用如下:

from bs4 import BeautifulSoup
something ='''
        <table style="width:100%">
        <tr>
        <th>Firstname</th>
        <th>Lastname</th>
        <th>Age</th>
        </tr>
        <tr>
        <td>Jill</td>
        <td>Smith</td>
        <td>50</td>
        </tr>
        <tr>
        <td>Eve</td>
        <td>Jackson</td>
        <td>94</td>
        </tr>
        </table>
        '''
messed_code= BeautifulSoup(something, 'html.parser')
file.write(messed_code.prettify())

就我个人而言,我认为在第一种情况下字符串看起来更好,只要它更具可读性

答案 1 :(得分:1)

from lxml import etree, html
html_string ='''
            <table style="width:100%">
            <tr>
            <th>Firstname</th>
            <th>Lastname</th>
            <th>Age</th>
            </tr>
            <tr>
            <td>Jill</td>
            <td>Smith</td>
            <td>50</td>
            </tr>
            <tr>
            <td>Eve</td>
            <td>Jackson</td>
            <td>94</td>
            </tr>
            </table>
            '''
html_object = html.fromstring(html_string)
file.write(etree.tostring(html_object, pretty_print=True))