Ark*_*tev 3 python string string-formatting python-3.x
我有一个字符串:
a = '0202201131181'
Run Code Online (Sandbox Code Playgroud)
我想用单个替换所有多次出现的1in a,1如果只找到一次出现'1',则用空字符串''替换它.
我的最终目标是获得:
a = '0202201318'
Run Code Online (Sandbox Code Playgroud)
在这里,'8'字符后面的'1'只出现一次,所以它被空字符串替换,但字符'3'之前的'11'和字符'3'之后的'11'被'1'取代.
这是我尝试过的if-else代码块,部分正确:
if '11' in a:
a = a.replace("11","1")
else:
a = a.replace("1","")
Run Code Online (Sandbox Code Playgroud)
但它输出'02022013181',这是不正确的.这该怎么做?
iz_*_*iz_ 10
正则表达式可能是最好的选择:
import re
a = '020220111311811001001001001'
a = re.sub(r'1{2,}', '1', re.sub(r'(?<!1)1(?=[^1]|$)', '', a))
print(a)
Run Code Online (Sandbox Code Playgroud)
首先分出单个1s,然后分出多次出现1.a为了测试目的,我添加了一些更多的字符,输出是
0202201318100000000
Run Code Online (Sandbox Code Playgroud)
如果你不喜欢单线引起的混乱:
a = re.sub(r'(?<!1)1(?=[^1]|$)', '', a)
a = re.sub(r'1{2,}', '1', a)
Run Code Online (Sandbox Code Playgroud)
说明(?<!1)1(?=[^1]|$):
(?<!1):确保之前的角色不是1.1:字面上匹配一个1.(?=[^1]|$):确保前面的字符是a)不是a 1,或b)是字符串的结尾.| 归档时间: |
|
| 查看次数: |
372 次 |
| 最近记录: |