【问题标题】:Removing /**/ from html using python使用python从html中删除/**/
【发布时间】:2015-05-10 05:04:04
【问题描述】:

这是我试图跳过的多行代码。

/****/
如果(window.bbcdotcom && bbcdotcom.slot){ bbcdotcom.slot('mpu', [1,2,3]); } /**/

我尝试了 BeautifulSoup、My Best of Knowledge 和正则表达式,但无法让它正常工作。我是 python 的初学者并尝试使用 RSS Feed 获取一些内容并执行自然语言处理。

【问题讨论】:

  • 它们是否保证在同一行,并且不会被空格或其他任何东西打断?
  • 可能不会。另外,请显示一些代码。
  • 它们不在同一行,并且代码与我在这里提供的代码相同(除了第一行是/**/ cmets)。谢谢回复。我用 lxml 包处理了我的问题。

标签: python regex python-2.7 nlp


【解决方案1】:

要删除 cmets (/*...*/),您可以使用

p = re.compile(r'(?s)/\*.*?\*/')
result = re.sub(p, '', test_str)

要删除/*...*/ 中的所有文本,您可以使用

p = re.compile(ur'(?s)/\*.*?\*/.*?/\*.*?\*/')
result = re.sub(p, '', test_str)

Complete sample code:

import re
test_str = u"/****/\n\n      if (window.bbcdotcom && bbcdotcom.slot) {\n      bbcdotcom.slot('mpu', [1,2,3]);\n      }\n      /**/\n      "
# REMOVE ALL BETWEEN COMMENTS AND THE COMMENTS THEMSELVES
p = re.compile(r'(?s)/\*.*?\*/.*?/\*.*?\*/')
result = re.sub(p, '', test_str)
print "Result 1: " + result
# REMOVE THE COMMENTS
p = re.compile(r'(?s)/\*.*?\*/')
result = re.sub(p, '', test_str)
print "Result 2: " + result

输出:

Result 1: 

Result 2: 

      if (window.bbcdotcom && bbcdotcom.slot) {
      bbcdotcom.slot('mpu', [1,2,3]);
      }

【讨论】:

  • 请注意,上一个答案中建议的正则表达式还将删除 // 之间的所有内容(由于在文字星号后使用了 * 量词),这可能是不安全的:请参阅 regex101.com/r/kU1rL5/1 .我的建议消除了这个问题,因为* 必须至少出现一次。
  • @Nithin,它对你有用还是需要更多帮助?
  • 我在使用它时遇到了同样的问题。所以,我刚从正则表达式转移到 lxml。顺便谢谢。
  • 您说您有问题,但您没有在问题中说明。如果您提供准确的输入和预期的输出,我会更新我的答案。反正。很高兴您找到了解决方案。
  • 能否请您提供有关您遇到的问题的信息?我想更新答案。
【解决方案2】:

如果你能保证格式完全如上,那么一个简单的正则表达式就足够了:

"/\**/.*?/\**/" -- 基本上,一个斜线后面跟着一些星号,然后是一个斜线,然后是任何东西,直到斜线后面跟着星号和另一个斜线。使用re.sub 将其替换为空,您将从文本中删除它。请参见下文,假设所有文本都在 text 变量中。

import re

In [12]: re.sub("/\**/.*?/\**/", '', "/*****/ hi hello how are you /**/")
Out[12]: ''

In [13]: re.sub("/\**/.*?/\**/", '', "testing \n 1 2 3/*****/ hi hello how are y
ou /**/ and more testing...")
Out[13]: 'testing \n 1 2 3 and more testing...'

【讨论】:

  • 谢谢,帮助不大
猜你喜欢
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 2017-07-01
  • 2018-12-13
  • 2021-06-21
  • 1970-01-01
  • 2016-02-09
  • 1970-01-01
相关资源
最近更新 更多