Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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从第一个单元格HTML中删除文本_Python_Html_Regex_Html Parsing - Fatal编程技术网

使用python从第一个单元格HTML中删除文本

使用python从第一个单元格HTML中删除文本,python,html,regex,html-parsing,Python,Html,Regex,Html Parsing,我有这个档案: <table> <tr> <td WIDTH="49%"> <p><a href="...1.htm"> cell to remove</a></p></td> <td WIDTH="51%"> some text </td> </tr> 一些文本 因此,我需要: <table&g

我有这个档案:

    <table>
    <tr>
    <td WIDTH="49%">
    <p><a href="...1.htm"> cell to remove</a></p></td>
    <td WIDTH="51%"> some text </td>
    </tr>

一些文本
因此,我需要:

    <table>
    <tr>
    <td> 
    </td>
    <td WIDTH="51%"> some text </td>
    </tr>

一些文本
我正在尝试使用此html读取文件,并用空标记替换我的第一个标记:

   ret = open('rec1.txt').read()
   re.sub('<td[^/td>]+>','<td> </td>',ret, 1)
   final= open('rec2.txt', 'w')
   final.write(ret)
   final.close()
ret=open('rec1.txt').read()
re.sub(']+>,'',ret,1)
final=open('rec2.txt','w')
期末写作(ret)
final.close()
正如您所看到的,我刚开始使用python之类的东西,当我阅读rec2.txt时,它包含与上一个文件完全相同的文本


tks

使用正则表达式解析HTML是一种非常糟糕的做法(请参见注释中的@Lutz Horn链接)

改用HTML解析器。例如,您可以使用以下方法将第一个
td
标记的值设置为空:

Beauty Soup是一个Python库,用于从HTML和HTML中提取数据 XML文件。它与您最喜欢的解析器一起工作,以提供惯用语法 导航、搜索和修改解析树的方法。信息技术 通常可以节省程序员数小时或数天的工作

从bs4导入美化组
data=”“”

一些文本 """ soup=BeautifulSoup(数据'html.parser') 单元格=soup.table.tr.td cell.string=“” cell.attrs={} 打印soup.prettify(formatter='html')
印刷品:

<table>
 <tr>
  <td>
  </td>
  <td width="51%">
   some text
  </td>
 </tr>
</table>

一些文本
另见:


希望能有所帮助。

使用正则表达式解析HTML是一种非常糟糕的做法(请参阅注释中的@Lutz Horn链接)

改用HTML解析器。例如,您可以使用以下方法将第一个
td
标记的值设置为空:

Beauty Soup是一个Python库,用于从HTML和HTML中提取数据 XML文件。它与您最喜欢的解析器一起工作,以提供惯用语法 导航、搜索和修改解析树的方法。信息技术 通常可以节省程序员数小时或数天的工作

从bs4导入美化组
data=”“”

一些文本 """ soup=BeautifulSoup(数据'html.parser') 单元格=soup.table.tr.td cell.string=“” cell.attrs={} 打印soup.prettify(formatter='html')
印刷品:

<table>
 <tr>
  <td>
  </td>
  <td width="51%">
   some text
  </td>
 </tr>
</table>

一些文本
另见:


希望能有所帮助。

使用正则表达式解析HTML是一种非常糟糕的做法。如果您实际上试图修改HTML,请使用HTML解析器

如果问题是学术性的,或者您只是试图进行问题中描述的有限转换,下面是一个正则表达式程序:

#!/usr/bin/python
import re
ret = open('rec1.txt').read()
ret = re.sub('<td.*?/td>','<td> </td>',ret, 1, re.DOTALL)
final= open('rec2.txt', 'w')
final.write(ret)
final.close()
#/usr/bin/python
进口稀土
ret=open('rec1.txt')。read()
ret=re.sub('','',ret,1,re.DOTALL)
final=open('rec2.txt','w')
期末写作(ret)
final.close()
注:

  • 表达式
    [/td]
    表示以任何顺序匹配
    /
    t
    d
    中的任何一个。请注意,我是如何使用
    *
    匹配后跟
    /td
    的任意字符串的
  • re.sub()
    的最后一个可选参数是flags参数
    re.DOTALL
    允许
    匹配新行
  • 意味着执行非贪婪搜索,因此它只消耗一个单元格
  • re.sub()
    返回生成的字符串,它不会就地修改字符串

    • 使用正则表达式解析HTML是一种非常糟糕的做法。如果您实际上试图修改HTML,请使用HTML解析器

      如果问题是学术性的,或者您只是试图进行问题中描述的有限转换,下面是一个正则表达式程序:

      #!/usr/bin/python
      import re
      ret = open('rec1.txt').read()
      ret = re.sub('<td.*?/td>','<td> </td>',ret, 1, re.DOTALL)
      final= open('rec2.txt', 'w')
      final.write(ret)
      final.close()
      
      #/usr/bin/python
      进口稀土
      ret=open('rec1.txt')。read()
      ret=re.sub('','',ret,1,re.DOTALL)
      final=open('rec2.txt','w')
      期末写作(ret)
      final.close()
      
      注:

      • 表达式
        [/td]
        表示以任何顺序匹配
        /
        t
        d
        中的任何一个。请注意,我是如何使用
        *
        匹配后跟
        /td
        的任意字符串的
      • re.sub()
        的最后一个可选参数是flags参数
        re.DOTALL
        允许
        匹配新行
      • 意味着执行非贪婪搜索,因此它只消耗一个单元格
      • re.sub()
        返回生成的字符串,它不会就地修改字符串

      我猜你没有读过这篇文章:你可能会发现有用的我曾经使用BeautifulSoup来查找元素()并删除它()我猜你没有读过这篇文章:你可能会发现有用的我曾经使用BeautifulSoup来查找元素()并删除它()特别感谢@Rob的评论!特别感谢@Rob的评论!