我正尝试仅用一个分号替换两个或多个连续的分号,如下面的代码所示,任何人都可以帮助我。
import re
str='select \n current_date;; \n'
str += ';'
str += 'Select 1 ; '
str += ';'
print re.sub(';+',';',str)
答案 0 :(得分:5)
如果您还想替换双分号之间可能有一定间隔的地方,则可以尝试以下正则表达式:
import re
str='select \n current_date;; \n'
str += ';'
str += 'Select 1 ; '
str += ';'
print re.sub('(;\s*)+;',';',str)
输出:
select
current_date;Select 1 ;
答案 1 :(得分:1)
如果要删除重复的分号,请;
:
import re
string ='select \n current_date;; \n'
string += ';'
string += 'Select 1 ; '
string += ';'
print(re.sub(';(\s+);|(;)+',';', string))
>>
select
current_date;
;Select 1 ;
这将删除分号之间有一个空格或一个或多个重复的分号。第一个模式;(\s+);
用于带空格的分号,第二个模式用于一个或多个重复项(;)+
。
此外,请勿将Python的命名空间(例如str
用作变量名)。
编辑: 我刚刚意识到,由于添加了换行符,因此不会返回您想要的内容:
尼克给出的答案通过用所有空格和重复替换分号来解决。
print(re.sub('(;\s*)+;',';',str))
为清楚起见。