我需要删除所有出现的单个分号,但保留两次出现。
输入:
poop,hello\/# what;up,\wor;;ld; yolo| s|ag"j"d\nhdhf,\;;
预期产出:
poop hello what up wor;;ld yolo| s|ag"j"d hdhf ;;
所以,除了出现一个分号外,我能删除所有内容。
a=re.sub(r'[^\w|\d|(;;)|\|"]'," ",a)
其中a
是显示在顶部的字符串。
但它给了我:
poop hello what;up wor;;ld; yolo| s|ag"j"d hdhf ;;
这里有什么问题?
答案 0 :(得分:1)
尝试:
s.replace(";;","$").replace(";"," ").replace("$",";;")
将;;
替换为$
,而不是将;
替换为空格而不是替换回;;
。
答案 1 :(得分:1)
你可以使用负向前瞻和负面的后视:
>>> re.sub(r'[^\w\d;|"]|(?<!;);(?!;)'," ",a)
'poop hello what up wor;;ld yolo| s|ag"j"d nhdhf ;;'