它實際上是更容易在扭轉字符串操作來跟蹤3位組,其中有更多的數字去(與(?=\d)
積極前瞻的:
for s in ('123','1234','123456789','1234567890'):
print(re.sub(r'(\d\d\d)(?=\d)',r'\1,',s[::-1])[::-1])
或負前瞻版本:
for s in ('123','1234','123456789','1234567890'):
print(re.sub(r'(\d\d\d)(?!$)',r'\1,',s[::-1])[::-1])
個
或者打印:
123
1,234
123,456,789
1,234,567,890
上扭轉串施加反向正則表達式被稱爲在sexeger的Perl ;-)
你也可以做到這一點並不需要扭轉串一個超前的版本:
for s in ('123','1234','123456789','1234567890'):
print(re.sub(r'(\d)(?=(\d{3})+$)',r'\1,',s))
# same output
基礎上的評論,只需添加一個適當的刪除imiter然後對.split
:
>>> for s in ('123','1234','123456789','1234567890'):
... re.sub(r'(\d)(?=(\d{3})+$)',r'\1\t',s).split('\t')
...
['123']
['1', '234']
['123', '456', '789']
['1', '234', '567', '890']
或者跳過正則表達式,只是做在Python:
for s in ('123','1234','123456789','1234567890'):
s=s[::-1]
n=3
print([s[i:i+n][::-1] for i in range(0,len(s),n)][::-1])
# same output
感謝這個,但有沒有辦法讓這樣的形式輸出:'['1','234','567',789]'。我不需要整個字符串在兩者之間用逗號返回。我希望輸出是三人組。對困惑感到抱歉。我更新了OP。 – Moondra
@Mondond當然,你可以稍微修改我的原始答案,並使用'string.split(',')'來獲取數字中逗號分隔的數組值。 –
@謝謝!我忘記了分裂。 – Moondra