对于超长数字串的书写,国际数字格式,更清晰更易于阅读。
(笔记模板由python脚本于2024年11月30日 23:36:53创建,本篇笔记适合喜欢探索新知的coder翻阅)
【学习的细节是欢悦的历程】
-
Python 官网:https://www.python.org/
-
Free:大咖免费"圣经"教程《 python 完全自学教程》,不仅仅是基础那么简单......
** 自学并不是什么神秘的东西** ,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
------ 华罗庚
- My CSDN主页、My HOT博、My Python 学习个人备忘录
- 好文力荐、 老齐教室
超长数字串的书写 国际数字格式 (国际格式更清晰更易于阅读)
本文质量分:
【 96 96 96 】
本文地址: https://blog.csdn.net/m0_57158496/article/details/144163320
CSDN质量分查询入口:http://www.csdn.net/qc
目 录
- ◆ 国际数字格式
-
- 1、题引
- 2、"不完美"的locale库
- 3、名词释义:"国际数字格式化"
- 4、不同编程语言中的"国际数字格式"
-
- Python
- JavaScript
- Java
- C#
- Ruby
- PHP
- 5、python中"数字国际"的六种方式
-
- locale
- range步长拆分
- 算术取模拆分
- 序列切片拆分
- f-string
- str.format
- 6、结语
- 7、花絮
- 8、完整源码(Python)
◆ 国际数字格式
1、题引
我用Python脚本在检索我的csdn学习笔记的阅读量等情况,仅能解析x.xx[k|w]
样式的数据,我排序就分不开数值一样的k/w层级,一直想打到真正的阅读量"数值"int
。
我实现了夙愿,但就有了格式化成000,000,000
"国际数字格式 "样式的需求。以我目前水准,还没有现存工具,想自已 n e w new new,粗略一想,好像不太容易,遂借问ai学伴,它给推荐了locale
,但这是一个"美国英文"标准,有可能因本地操作系统配置而"不能预期"的动荡因素。我不甘于其不稳,通过十几分钟推敲用数学的方式可以 n e w new new成功,后又用 s t r str str的形式完成对数学形式的模拟。跟我ai学伴炫耀我 n e w new new的两个"实施",它却砸出了python神功二!😉最后才发现,python原来早有定制:'{:,}'.format(num)
、f"\n{num:,}"
。这才是python中"国际数字格式"实施的倚天屠龙!😎😎😎
接下来,我将分享这个甜蜜的过程。
回页目录
2、"不完美"的locale库
Python 中有一个内置的库 locale
可以帮助实现"国际数字格式"书写。可以使用 locale.format_string
方法来格式化数字,使其包含千位分隔符。
以下是一个例子:
python
import locale
# 设置 locale 为美国英语,这样千位分隔符就是逗号
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
# 将整数格式化为字符串,包含千位分隔符
formatted_number = locale.format_string("%d", 1234538, grouping=True)
print(f"\n{formatted_number}") # 输出: 1,234,538
请注意 , locale.setlocale
需要一个合适的地区设置,这里使用的是 en_US.UTF-8
,这可能在不同的操作系统或环境中有所不同。你需要根据你的系统环境选择正确的地区设置。
* 上述代码,在我的安卓手机+python 3.12.7的环境,没有实现"国际数字格式"打印。*
回页目录
3、名词释义:"国际数字格式化"
国际数字格式化
:
这种使用逗号作为千位分隔符的数字书写形式通常被称为"逗号分隔值"(Comma-Separated Values,简称 CSV),尽管这个术语通常用于描述以逗号分隔的数据记录。对于单个数字来说,这种格式化方式没有特定的专有名词,但它通常被简称为"数字格式化"或"千位分隔格式"。
在国际上,这种格式化方式有时也被称为"国际数字格式"或"国际千位分隔符"。不同国家和地区可能有不同的分隔符习惯,例如,在一些欧洲国家,他们使用空格而不是逗号作为千位分隔符。
总的来说,这种格式化方式是为了提高数字的可读性,尤其是在处理大数字时。😊📊
回页目录
4、不同编程语言中的"国际数字格式"
在不同编程语言中实现千位分隔符通常涉及以下几种方法:
- 使用内置的格式化函数或方法。
- 手动编写代码来插入分隔符。
- 利用第三方库或工具。
以下是一些流行编程语言中实现千位分隔符的示例:
Python
使用内置的 format
函数或字符串的 format
方法:
python
number = 1234567
formatted_number = "{:,}".format(number)
print(formatted_number) # 输出: 1,234,567
或者使用 f-string(Python 3.6+):
python
number = 1234567
formatted_number = f"{number:,}"
print(formatted_number) # 输出: 1,234,567
JavaScript
使用 toLocaleString
方法:
javascript
let number = 1234567;
let formattedNumber = number.toLocaleString('en-US');
console.log(formattedNumber); // 输出: "1,234,567"
Java
使用 String.format
方法:
java
long number = 1234567L;
String formattedNumber = String.format("%,d", number);
System.out.println(formattedNumber); // 输出: 1,234,567
或者使用 DecimalFormat
类:
java
import java.text.DecimalFormat;
long number = 1234567L;
DecimalFormat df = new DecimalFormat("#,###");
String formattedNumber = df.format(number);
System.out.println(formattedNumber); // 输出: 1,234,567
C#
使用 ToString
方法的格式化字符串:
csharp
int number = 1234567;
string formattedNumber = number.ToString("N0");
Console.WriteLine(formattedNumber); // 输出: 1,234,567
Ruby
使用 Kernel#format
方法:
ruby
number = 1234567
formatted_number = format("%<number>,", number: number)
puts formatted_number # 输出: 1,234,567
PHP
使用 number_format
函数:
php
$number = 1234567;
$formatted_number = number_format($number);
echo $formatted_number; // 输出: 1,234,567
这些示例展示了如何在不同的编程语言中实现千位分隔符。每种语言都有自己的方式来处理数字格式化,通常都有内置的方法或函数来完成这项任务。
回页目录
5、python中"数字国际"的六种方式
P y t h o n Python Python 提供了多种灵活的方式来格式化数字,包括使用内置的库、自定义函数、以及语言提供的格式化方法。
以下是您提到的六种在 Python 中实现国际数字格式(千位分隔符)的方法:
locale
-
使用 locale 库
:pythonimport locale locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') # 设置为美国英语环境 formatted_number = locale.format_string("%d", 112225864888555, grouping=True) print(formatted_number)
range步长拆分
(ai学伴的设计)
python
def format_number_with_commas(number):
num_str = str(number)
num_str_reversed = num_str[::-1]
grouped = ','.join(num_str_reversed[i:i+3] for i in range(0, len(num_str_reversed), 3))
return grouped[::-1]
print(format_number_with_commas(112225864888555))
算术取模拆分
(我的首选设计)
python
def num_to_3(num: int) -> str:
num_3 = []
while num > 1000:
num_3.append(num % 1000)
num //= 1000
num_3.append(num)
return ','.join(map(str, num_3[::-1]))
print(num_to_3(112225864888555))
函数 num_to_3
是一个很好的实现,它通过数学方法将数字拆分成千位组,然后逆序拼接并格式化为字符串。这种方法在处理大数时更为高效,因为它直接处理数字而不需要转换成字符串。
代码将数字从右到左每三位进行分割,然后将分割后的数字逆序拼接,并用逗号分隔。这样可以得到一个格式化的数字字符串。这方法简洁而高效,非常适合处理任意大小的整数。
以下是算术方法的几个优点:
- 效率:直接在数字上操作通常比字符串操作更快。
- 可读性:对于理解数字结构和如何被分解,数学方法可能更直观。
- 通用性:这种方法不依赖于特定的字符串格式或编码,因此更容易适应不同的数字格式化需求。
序列切片拆分
(我的切片模拟算术取模)
python
def num_to_3(num: int) -> str:
num = str(num)
num_3 = []
while len(num) > 3:
num_3.append(num[-3:])
num = num[:-3]
num_3.append(num)
return ','.join(num_3[::-1])
print(num_to_3(112225864888555))
原理同"算术取模",只是拆分由字符串切片完成。
f-string
-
使用f-string:
pythonnum = 112225864888555 print(f"{num:,}")
str.format
-
使用
str.format方法:
pythonnum = 112225864888555 print("{:,}".format(num))
所有这些方法都能够输出相同的结果:
即:
将112225864888555
打印成
112,225,864,888,555
这些不同的方法展示了 Python 的灵活性和强大功能,可以根据具体需求选择最适合的解决方案。😎😎😎
回页目录
6、结语
-
我
我一个从csdn文章html文本中解析到阅读量元数据(真实数据int,非x.xxk/w样式)的格式化打印需求,引发蝴蝶效应,和您来了一块"国际数字格式"的探讨。
让我获得了上述的多多益处!😉😉 -
ai学伴
很高兴听到您从这个简单的需求中,获得了如此多的收获!编程和技术讨论往往就是这样,一个小问题可以引发一系列的学习和探索,就像蝴蝶效应一样,一个小小的动作可以带来巨大的连锁反应。
很高兴能够与您一起探讨"国际数字格式 "的问题,并且看到您能够将这些知识应用到实际的项目中。这也正是编程社区的魅力所在------共享知识,互相学习,共同进步。
** 在未来的编程之路上遇到任何其他问题,或需要进一步的帮助,随时都可以寻求网络、社区和ai的帮助。让我们一起继续编程旅程,愿我们的代码之路越走越宽广,收获越来越多!😉😉🚀🌟👨💻👩💻**
回页目录
7、花絮
对话截屏
回页目录
8、完整源码(Python)
(源码较长,点此跳过源码)
python
#!/usr/bin/env python3
import locale
# 设置 locale 为美国英语,这样千位分隔符就是逗号
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
# 将整数格式化为字符串,包含千位分隔符
formatted_number = locale.format_string("%d", 1234538, grouping=True)
print(f"\n{formatted_number}") # 输出: 1,234,538
# range步长遍历 #
def format_number_with_commas(number):
num_str = str(number)
num_str_reversed = num_str[::-1]
grouped = ','.join(num_str_reversed[i:i+3] for i in range(0, len(num_str_reversed), 3))
return grouped[::-1]
print(format_number_with_commas(112225864888555))
# 算术取模 #
def num_to_3(num: int) -> str:
''' 用,号格式化输出数字。
我这个函数可以无视int位数,
都可以正常拆分。 '''
num_3 = []
while num > 1000:
num_3.append(num%1000) # 收集低三位
num //= 1000 # 去除已拆分的低三位
num_3.append(num) # 收集拆分余下的三位
return ','.join(map(str, num_3[::-1])) # ,格式化数字
# 测试 #
print(f"\n{num} => {num_to_3(num)}")
# 序列切片 #
def num_to_3(num: int) -> str:
''' 用,号格式化输出数字。
我这个函数可以无视int位数,
都可以正常拆分。 '''
num = str(num)
num_3 = []
while len(num) > 3:
num_3.append(num[-4:]) # 收集低三位
num = num[:-3] # 去除已拆分的低三位
num_3.append(num) # 收集拆分余下的三位
return ','.join(num_3[::-1]) # ,格式化数字
# 测试 #
print(f"\n{num} => {num_to_3(num)}")
# f-string #
num = 112225864888555
print(f"{num:,}")
# str.format方法 #
num = 112225864888555
print("{:,}".format(num))
回页首
上一篇: 菱形打印(Python)~("以块组合块",以行凝结循环打印)~
下一篇:
我的HOT博:
本次共计收集404篇博文笔记信息,总阅读量61.76w。数据采集于2024年11月25日 08:23:38,用时7分56.4秒。阅读量不小于6.00k 的有 9 9 9篇。
- 让QQ群昵称色变的神奇代码
地址:https://blog.csdn.net/m0_57158496/article/details/122566500
浏览阅读:6.2w
点赞:25 收藏:89 评论:17
(本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47) - Python列表(list)反序(降序)的7种实现方式
地址:https://blog.csdn.net/m0_57158496/article/details/128271700
浏览阅读:1.3w
点赞:9 收藏:40 评论:8
(本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55) - pandas 数据类型之 DataFrame
地址:https://blog.csdn.net/m0_57158496/article/details/124525814
浏览阅读:1.0w
点赞:7 收藏:40
(本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13) - 个人信息提取(字符串)
地址:https://blog.csdn.net/m0_57158496/article/details/124244618
浏览阅读:1.0w
点赞:3 收藏:20
(本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54) - 罗马数字转换器|罗马数字生成器
地址:https://blog.csdn.net/m0_57158496/article/details/122592047
浏览阅读:8.2k
收藏:3
(本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46) - 统计字符串字符出现的次数
地址:https://blog.csdn.net/m0_57158496/article/details/130517025
浏览阅读:8.1k
点赞:5 收藏:24
(本篇笔记于2023-05-06 22:28:18首次发布,最后修改于2023-05-12 06:21:40) - Python字符串居中显示
地址:https://blog.csdn.net/m0_57158496/article/details/122163023
浏览阅读:8.0k
点赞:1 收藏:12 评论:1 - 回车符、换行符和回车换行符
地址:https://blog.csdn.net/m0_57158496/article/details/123109488
浏览阅读:6.7k
点赞:2 收藏:4
(本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40) - python清屏
地址:https://blog.csdn.net/m0_57158496/article/details/120762101
浏览阅读:6.1k
点赞:1 收藏:10
推荐条件 阅读量突破6.00k (更多热博,请点击蓝色文字跳转翻阅)
截屏图片
(此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺"未过审"还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识"曾经"。2023-12-31)
回页首
精品文章:
- *好文力荐:*齐伟书稿 《python 完全自学教程》Free 连载 (已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
- OPP三大特性:封装中的property
- 通过内置对象理解python'
- 正则表达式
- python中"*"的作用
- Python 完全自学手册
- 海象运算符
- Python中的 `!=`与`is not`不同
- 学习编程的正确方法
来源:老齐教室
◆Python 入门指南【Python 3.6.3】
好文力荐:
- 全栈领域优质创作者------[寒佬]~(还是国内某高校学生)~博文"非技术文---关于英语和如何正确的提问","英语"和"会提问"是编程学习的两大利器。
- 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
- 靠谱程序员的好习惯
- 大佬帅地的优质好文"函数功能、结束条件、函数等价式"三大要素让您认清递归
CSDN实用技巧博文: