首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除Python中[quote=和[/quote]之间的文本

删除Python中[quote=和[/quote]之间的文本
EN

Stack Overflow用户
提问于 2019-07-03 15:34:47
回答 2查看 235关注 0票数 0

我正在读取一个用于应用NLP的csv文件,并试图对数据进行预处理。我已经收到了一个在线论坛的数据,因此,有它的报价。怎么才能把它们移走?作为一个例子;

代码语言:javascript
复制
a='[b]Re:[/b] 
[quote="xxx"] How can I do that blah blah xxx [/quote]
 Hello xxx, I will tell you how you can do it blah blah blah.'

我想要下面的表格;

A=‘你好xxx,我会告诉你怎么做的。’

我想要regex检测[quote=“并开始删除直到它看到/quote。这有可能吗?”

我试过了,但没有用。

代码语言:javascript
复制
  def quotes(text):
   return re.sub('\[([^\]=]+)(?:=[^\]]+)?\].*?\[\/\\1\]', '', text)

  data['message'] = data['message'].apply(quotes)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-04 15:43:23

答案其实太简单了,

代码语言:javascript
复制
def quotes(text):
 return re.sub(r'\[quote.+quote\]','',text)
data['message'] = data['message'].apply(quotes)

就是这样。

票数 0
EN

Stack Overflow用户

发布于 2019-07-03 15:44:52

以下是一个似乎行之有效的解决方案:

代码语言:javascript
复制
a = '[b]Re:[/b] [quote="xxx"] How can I do that blah blah xxx [/quote] Hello xxx, I will tell you how you can do it blah blah blah.'
output = re.sub('\[([^\]=]+)(?:=[^\]]+)?\](.*?)\[\/\\1\]', '\\2', a)
print(output)

这些指纹:

代码语言:javascript
复制
Re:  How can I do that blah blah xxx  Hello xxx, I will tell you how you can do it blah blah blah.

regex模式有点冗长,但它所做的只是匹配每一组标记,例如[quote="xxx"]...[/quote],删除它们,然后用标记中的任何内容替换。

代码语言:javascript
复制
\[([^\]=]+)(?:=[^\]]+)?\]  match an opening tag, and capture the tag name in \1
(.*?)                      match and capture in \2 all the content
\[\/\\1\]                  match a closing tag, using the backreference \1

注意,默认情况下,re.sub会进行全局替换,因此,一旦我们有了一组标记的工作模式,它就可以在任何地方应用。

编辑:

如果您实际上希望匹配并删除整个标记及其内容,请使用以下命令:

代码语言:javascript
复制
output = re.sub('\[([^\]=]+)(?:=[^\]]+)?\].*?\[\/\\1\]', '', a)
print(output)

这些指纹:

代码语言:javascript
复制
Hello xxx, I will tell you how you can do it blah blah blah.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56873625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档