5 回答
TA贡献1826条经验 获得超6个赞
您能做的最好的事情就是删除 the[""和 the ]"",这样剩下的就只有引号了。
import re
regex = r'(\[\"\"|\]\"\")'
data = r'"[""www.abccc.com"]"", "[""www.gsfa.com"]""'
print(re.sub(regex, '', data))
这给出:
"www.abccc.com", "www.gsfa.com"
TA贡献1872条经验 获得超3个赞
import re
recheck = re.compile(r'\"[\[\]]\"\"')
print(recheck.sub(' ', r'"[""www.abccc.com"]"", "[""www.gsfa.com"]""'))
应该工作,它将匹配“,然后是[或],然后是两个“”。
括号表示 re 应该检查哪些字符,所以 [""] 最终匹配一个双引号,而 ["'] 将匹配一个字符的单引号或双引号。这就是为什么我的 re 匹配左边或三个双引号内的右括号。
TA贡献1806条经验 获得超8个赞
另一种选择:
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)
TA贡献1824条经验 获得超8个赞
你说你正在使用熊猫,所以你需要
df['col'] = df['col'].str.replace(r'"*\["*|"*]"*', '"')
解释
NODE EXPLANATION
--------------------------------------------------------------------------------
"* '"' (0 or more times (matching the most
amount possible))
--------------------------------------------------------------------------------
\[ '['
--------------------------------------------------------------------------------
"* '"' (0 or more times (matching the most
amount possible))
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
"* '"' (0 or more times (matching the most
amount possible))
--------------------------------------------------------------------------------
] ']'
--------------------------------------------------------------------------------
"* '"' (0 or more times (matching the most
amount possible))
TA贡献1846条经验 获得超7个赞
将匹配项替换为r'(\"\[\"|\"\]\")'
空字符串 ( ''
) 即可得到您要查找的输出。
该模式使用匹配的捕获组:
"["
字符串开头的前导尾随
"]"
字符串的末尾
将此作为第一个参数传递,re.sub(pattern, substitution, string)
将空字符串作为第二个参数传递,将要操作的字符串作为第三个参数传递,将导致用空字符串替换上面定义的匹配项 - 让您只在开始和结束"
时根据您的原始问题生成的字符串。
下面的完整示例。
import re
result = re.sub(r'(\"\[\"|\"\]\")', '', r'"[""www.abccc.com"]""')
print(result)
output: "www.abccc.com"
添加回答
举报