Python:将一个characater的多次出现替换为一次,但单次出现则为n
发布时间:2020-12-20 12:15:05 所属栏目:Python 来源:网络整理
导读:我有一个字符串: a = '0202201131181' 我希望在if中存在的所有多次出现的1替换为1,但如果只找到一次’1′,则用空字符串”替换它. 我的最终目标是获得: a = '0202201318' 在这里,’8’字符后面的’1’只出现一次,所以它被空字符串替换,但字符’3’之前的’1
我有一个字符串:
a = '0202201131181' 我希望在if中存在的所有多次出现的1替换为1,但如果只找到一次’1′,则用空字符串”替换它. 我的最终目标是获得: a = '0202201318' 在这里,’8’字符后面的’1’只出现一次,所以它被空字符串替换,但字符’3’之前的’11’和字符’3’之后的’11’被’1’取代. 这是我尝试过的if-else代码块,部分正确: if '11' in a: a = a.replace("11","1") else: a = a.replace("1","") 但它输出’02022013181′,这是不正确的.这该怎么做? 解决方法
正则表达式可能是最好的选择:
import re a = '020220111311811001001001001' a = re.sub(r'1{2,}','1',re.sub(r'(?<!1)1(?=[^1]|$)','',a)) print(a) 首先分出单个1,然后分出多次出现的1.我为了测试目的添加了一些更多的字符,输出是 0202201318100000000 如果你不喜欢单线引起的混乱: a = re.sub(r'(?<!1)1(?=[^1]|$)',a) a = re.sub(r'1{2,a) (?<!1)1(?= [^ 1] | $)的解释: >(?<!1):确保之前的字符不是1.> 1:字面上匹配1.>(?= [^ 1] | $):确保前面的字符是a)不是1,或b)是字符串的结尾. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |