【问题标题】:print text with underline in python在python中打印带下划线的文本
【发布时间】:2014-04-29 17:35:35
【问题描述】:

我已尝试使用以下代码在 html 文件中查找带下划线的文本,但它不起作用。

f=open("jk.html","r")
while True:
    for line in f.read():
        for i in line.split():
            j=i.find("<ul>")
            k=i.find("</ul>")
            for m in range(j, k):
                print(m)

f.close()

这是我的 HTML 文件:

<html>
<body>
   <ul> hill </ul>
   <p> millfhhf </p>
</body>
</html>

【问题讨论】:

  • 解析html内容,建议使用python的xml解析模块之一。
  • 顺便说一句 &lt;ul&gt;无序列表&lt;u&gt; 是带下划线的文本。
  • 如果您预计 while 循环会中断,那么您将等待一段时间。

标签: python


【解决方案1】:

如果您使用 BeautifulSoup 模块,这将变得非常简单,它在解析 HTML 方面会更好(尤其是在 HTML 混乱的情况下)。

import bs4

f = open("test.html")
soup = bs4.BeautifulSoup(f)

for underlined in soup.find_all('u'):
    print underlined.get_text()

另外,HTML 中下划线文本的标记是

<html>
<body>
   <p>
       <u> hill </u>
       <u> millfhhf </u>
   </p>
</body>
</html>

【讨论】:

  • 是的,你需要安装它。默认情况下,它不包含在 Python 中。您使用的是什么操作系统?
  • windows 7 操作系统
  • 您需要使用 pip 或 easy_install(通过 python setuptools 获得)安装它。有关说明,请参阅此 stackoverflow question
  • 有帮助吗,你能安装 bs4 吗?
【解决方案2】:

此代码不起作用,因为read() 返回文件的其余部分,然后您逐个字符地迭代它。对于行使用readline() 或只是遍历文件:

for line in fp:
    # do whatever

也就是说,使用 htmlparserBeautifulSoup 或 XML 解析器进行任何可靠的解析。

另外,下划线的标签是&lt;u&gt;,而不是&lt;ul&gt;

【讨论】:

  • read 不返回下一个字符,而是返回文件的整个其余部分。
  • 你能告诉我如何使用 HTML 解析器
  • @SumeettenDoeschate 见@mdadm's answer
  • @SumeettenDoeschate 请不要大喊大叫。
猜你喜欢
  • 1970-01-01
  • 2016-05-25
  • 2012-05-30
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 2018-07-24
  • 2017-04-13
  • 1970-01-01
相关资源
最近更新 更多