我正在读取一个用于应用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,我会告诉你怎么做的。’
我想要regex检测[quote=“并开始删除直到它看到/quote。这有可能吗?”
我试过了,但没有用。
def quotes(text):
return re.sub('\[([^\]=]+)(?:=[^\]]+)?\].*?\[\/\\1\]', '', text)
data['message'] = data['message'].apply(quotes)发布于 2019-07-04 15:43:23
答案其实太简单了,
def quotes(text):
return re.sub(r'\[quote.+quote\]','',text)
data['message'] = data['message'].apply(quotes)就是这样。
发布于 2019-07-03 15:44:52
以下是一个似乎行之有效的解决方案:
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.regex模式有点冗长,但它所做的只是匹配每一组标记,例如[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会进行全局替换,因此,一旦我们有了一组标记的工作模式,它就可以在任何地方应用。
编辑:
如果您实际上希望匹配并删除整个标记及其内容,请使用以下命令:
output = re.sub('\[([^\]=]+)(?:=[^\]]+)?\].*?\[\/\\1\]', '', a)
print(output)这些指纹:
Hello xxx, I will tell you how you can do it blah blah blah.https://stackoverflow.com/questions/56873625
复制相似问题