Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用lxml.text\u content()从html提取文本时,如何保留新行_Python_Html_Lxml_Whoosh - Fatal编程技术网

Python 使用lxml.text\u content()从html提取文本时,如何保留新行

Python 使用lxml.text\u content()从html提取文本时,如何保留新行,python,html,lxml,whoosh,Python,Html,Lxml,Whoosh,我正在努力学习使用嗖嗖声。我有大量的html文档要搜索。我发现text_content方法产生了一些有趣的问题,例如,我可能有一些文本组织在一个表中 <html><table><tr><td>banana</td><td>republic</td></tr><tr><td>stateless</td><td>person</td></t

我正在努力学习使用嗖嗖声。我有大量的html文档要搜索。我发现text_content方法产生了一些有趣的问题,例如,我可能有一些文本组织在一个表中

<html><table><tr><td>banana</td><td>republic</td></tr><tr><td>stateless</td><td>person</td></table></html>
结果没有预期的空格

“bananarepublicstatelessperson”

我尝试使用string.replace插入新行

myString = myString.replace('</tr>','</tr>\n')
我确认新线路已经存在

'<html><table><tr><td>banana</td><td>republic</td></tr>\n<tr><td>stateless</td><td>person</td></table></html>'
但是当我从上面运行相同的代码时,行提要不存在。因此,生成的文本内容与上面的一样。 这对我来说是一个问题,因为我需要能够分离单词,我想我可以在每个td之后添加非中断空格,在行之后添加换行符,以及在body元素之后添加d换行符等,以获得合理地符合我的原始来源的文本

我会注意到,我做了更多的测试,发现在段落标记结束后插入的换行符被保留了下来。但是表格中有很多文本我需要能够搜索


感谢您的帮助

您可以使用此解决方案:

import re
def striphtml(data):
    p = re.compile(r'<.*?>')
    return p.sub('', data)

>>> striphtml('<a href="foo.com" class="bar">I Want This <b>text!</b></a>')
>>> 'I Want This text!'

在这里找到:

谢谢,但我一直在读到,在处理html时应该避免使用reg表达式。我意识到了这种可能性,但已经避免了这种可能性,在我这样做之前,我可能会求助于使用lxml的手动方法。也就是说,我会按顺序处理找到的每个元素,并使用规则。您的答案让我找到了html2text,我认为这是一个更好的开始,所以我标记了
import re
def striphtml(data):
    p = re.compile(r'<.*?>')
    return p.sub('', data)

>>> striphtml('<a href="foo.com" class="bar">I Want This <b>text!</b></a>')
>>> 'I Want This text!'