回答
一種選擇是使用re
模塊,用正則表達式匹配的數量和重新格式化:
import re
re.sub(r"(\d{4})(\d{2})(\d{2})", r"\1 \2 \3", "12345678")
# '1234 56 78'
或者爲了可讀性您可能要使用千位分隔符格式化:
"{:,d}".format(12345678)
# '12,345,678'
不知道'1234567'的OP預期輸出是什麼,但是這個返回'1234567'而不是'1234 56 7'。 –
@AshwiniChaudhary正則表達式選項是相當有限的,我不能提出一個通用的,而不必事先知道數字和格式要求的數量。所以我想這只是目前的一個選擇。 – Psidom
您也可以使用itertools
和str.join()
:
>>> from itertools import zip_longest
>>>
>>> def grouper(iterable, n, fillvalue=None):
args = [iter(iterable)] * n
return zip_longest(*args, fillvalue=fillvalue)
>>> def pretty_print(start, number, delim=' '):
number = str(number)
end = delim.join(''.join(g) for g in grouper(number[start:], 2, ''))
return number[:start] + delim + end
>>> number = 12345678
>>> pretty_print(4, number, ' ')
'1234 56 78'
>>> pretty_print(4, number, ',')
'1234,56,78'
>>> pretty_print(4, number, '|')
'1234|56|78'
你可以做這樣的事情:
>>> from itertools import islice
>>> def solve(num, n=4):
... s = str(num)
... fmt = [n] + [2] * ((len(s) - n) // 2);
... it = iter(s)
... return ' '.join(''.join(islice(it, x)) for x in fmt)
>>> solve(12345678)
'1234 56 78'
>>> solve(1234567890)
'1234 56 78 90'
如果號碼總是要8位數字,你不需要做任何事情複雜得多,使用簡單string formatting spec:
>>> '{}{}{}{} {}{} {}{}'.format(*str(12345678))
1234 56 78
如果您可以擁有任意偶數的長度爲2或更大的數字,並且想要將第一個最多4位數字分組,然後使用後面的數字pa IRS後分組,你仍然可以使這項工作很容易:
>>> digits8 = str(12345678)
>>> ('{}{}' + ' '.join('{}{}' for _ in range(len(digits)//2-1))).format(*digits)
1234 56 78
>>> digits6 = str(123456)
>>> ('{}{}' + ' '.join('{}{}' for _ in range(len(digits)//2-1))).format(*digits)
1234 56
>>> digits4 = str(1234)
>>> ('{}{}' + ' '.join('{}{}' for _ in range(len(digits)//2-1))).format(*digits)
1234
>>> digits2 = str(12)
>>> ('{}{}' + ' '.join('{}{}' for _ in range(len(digits)//2-1))).format(*digits)
12
作爲一個功能:
def special_format(number):
digits = str(int(number))
if len(digits)%2 != 0:
raise ValueError('Number must have an even number of digits.')
return ('{}{}' + ' '.join('{}{}' for _ in range(len(digits)//2-1))).format(*digits)
現在,你可以這樣做:
>>> special_format(12345678)
'1234 56 78'
>>> special_format(123456)
'1234 56'
>>> special_format(12345678123456)
'1234 56 78 12 34 56'
>>> special_format(12)
'12'
這個答案完全符合OP以簡單的方式提出的要求。對於爲什麼有人會倒下它,我感到很困惑。 –
- 1. 在python中格式化/顯示列表
- 2. 格式化只顯示4位數字
- 3. 格式化Python中的數字顯示3
- 4. 字符串格式化在Python:顯示價格不帶小數點的
- 5. 在組織模式下顯示帶格式化字符的格式化文本
- 6. Python字符串格式化顯示問題
- 7. 數字格式顯示在php
- 8. UILabels在數字格式如何顯示
- 9. 顯示格式無法格式化
- 10. Taglib顯示java.time.LocalDate格式化
- 11. 格式化datalist顯示
- 12. 顯示右格式化json
- 13. 在格式化字符串小數點後兩位數字顯示在iPhone
- 14. ASP.NETDatagrid,顯示格式化數據
- 15. 顯示前格式化數據
- 16. Python字符串格式化
- 17. Python字符串格式化
- 18. python字符串格式化函數
- 19. Python - 格式化ascii表的數字
- 20. 數字格式化程序不允許小數顯示
- 21. 格式化在Python
- 22. 在Python中顯示大量的格式化文本
- 23. 使用python在窗口中顯示格式化文本
- 24. 在UITableView中顯示格式化文本
- 25. 格式化XML以在TextView中顯示?
- 26. 在格式化表格中顯示mysql數據
- 27. 在javascript中格式化python字符串
- 28. 在python中格式化字符串
- 29. 在Python中格式化字符串
- 30. 字符串在python格式化
如何爲'1234 56 78''比'12345678'更可讀嗎? –
您的意思是12 34 56 78? –