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

时间:2019-07-03 15:34:47

标签: python-3.x

我正在读取要应用NLP的csv文件,并且正在尝试预处理数据。我从一个在线论坛收到数据,因此上面有引号。如何删除它们?作为示例;

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,我会告诉你如何做到的等等。'

我想检测到[quote =“并开始删除直到看到[/ quote]的正则表达式。这可能吗?

我已经尝试过了,但是没有用。

  def quotes(text):
   return re.sub('\[([^\]=]+)(?:=[^\]]+)?\].*?\[\/\\1\]', '', text)

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

2 个答案:

答案 0 :(得分:0)

这是一个可行的解决方案:

<FlatList
  // ...
  contentInset={{top: 0, bottom: 20, left: 0, right: 0}}
  contentInsetAdjustmentBehavior="automatic"
  // ...  
/>

此打印:

<div>
    <iframe src="https://player.vimeo.com/video/342787403?&autoplay=1&loop=1&title=0&byline=0&portrait=0&muted=1&#t=235s" style="position:absolute;top:0;left:0;width:100%;height:100%;" width="1400" height="900" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen>
    </iframe>
</div>

regex模式有点冗长,但是它要做的就是匹配每组标记,例如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) ,将其删除,然后以标签内的任何内容替换。

Re:  How can I do that blah blah xxx  Hello xxx, I will tell you how you can do it blah blah blah.

请注意,[quote="xxx"]...[/quote]默认情况下会进行全局替换,因此一旦我们有了一套适用于单个标签的工作模式,便可以将其应用于任何地方。

编辑:

如果您实际上想匹配删除整个标签及其内容,请使用以下方法:

\[([^\]=]+)(?:=[^\]]+)?\]  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

答案 1 :(得分:0)

答案实际上太简单了

def quotes(text):
 return re.sub(r'\[quote.+quote\]','',text)
data['message'] = data['message'].apply(quotes)

就是这样。