删除特殊字符模式中的正则表达式

2024-06-28 19:56:36 发布

您现在位置:Python中文网/ 问答频道 /正文

现在我在熊猫数据框中得到了一个字符串,如下所示

"[""www.abccc.com"]"", "[""www.gsfa.com"]""

所以我要做的是用正则表达式替换“[”和“]”

我尝试了一些组合来首先抓住模式,例如:

r' \["[""] '
r' [\"[""] '
r' [\"[\""] '

所有这些都不起作用。。。 当我在regex101中使用以下命令时:

[\"[\"\"] 

我为每个特殊字符找到了4个匹配项,而不是一次匹配所有模式

有人能告诉我,我怎样才能解决这个问题


Tags: 数据字符串命令comwww模式特殊字符regex101
3条回答

你能做的最好的事情就是删除[""]"",这样剩下的就只有引号了

import re
regex = r'(\[\"\"|\]\"\")'
data = r'"[""www.abccc.com"]"", "[""www.gsfa.com"]""'
print(re.sub(regex, '', data))

这使得:

"www.abccc.com", "www.gsfa.com"
import re
recheck = re.compile(r'\"[\[\]]\"\"')
print(recheck.sub(' ', r'"[""www.abccc.com"]"", "[""www.gsfa.com"]""'))

如果有效,它将匹配“,”然后是[或],然后是两个“

括号表示re应检查哪些字符,因此[“”]最终匹配一个双引号,而[“]”将匹配一个字符的单引号或双引号。这就是为什么在三个双引号中我的重匹配左括号或右括号

另一种选择:

import regex as re

rx = re.compile(r'(?:\G(?!\A)|\[)[^]]+')

some_junky_string = '"[""www.abccc.com"]"", "[""www.gsfa.com"]""'
content = [m.group(0).strip('"') for m in rx.finditer(some_junky_string)]
print(content)

相关问题 更多 >