python 中[0-9]为啥代表一位数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 中[0-9]为啥代表一位数字相关的知识,希望对你有一定的参考价值。

参考技术A 因为字符之间只能是数字。匹配字符串的开头以数字0-9之间的数字开头,长度在1-20之间,并且字符只能是数字,并且以数字0-9之间的数字结尾。python是一种面向对象的,交互式的,解释型的计算机程序设计语言。Python的设计具有高可读性,它使用英语关键词而非标点符号,语法结构也比其他语言简单。它的主要功能是一种解释型语言,因此在使用python时不需要进行编译。它是非常适合面向对象的的编程,因为它允许类的定义以及组合和继承。Python支持5种数据类型:1.数字(Numbers)2.字符串(Strings)3.列表(Lists)4.元组(tuples)5.字典(Dictionary)

为啥 Firestore 舍入 64 位整数?

【中文标题】为啥 Firestore 舍入 64 位整数?【英文标题】:Why is Firestore rounding 64 bit integers?为什么 Firestore 舍入 64 位整数? 【发布时间】:2019-12-16 07:00:58 【问题描述】:

我正在尝试将来自 python 程序的 64 位整数存储在我的 Firestore 数据库中。问题是最后一位数字似乎被四舍五入了。

doc = db.collection('questions').document('0MPvbeTEglD9lbpDq6xm')
ints = [9223372036854775807, 9223372036854775533, 9223372036854775267]
doc.update(
    'random': ints
)

当我查看数据库时,它们存储为:

random = [9223372036854776000, 9223372036854776000, 9223372036854775000

根据the documentation 支持64 位有符号整数。可能是什么问题?

【问题讨论】:

数字是四舍五入还是截断? 我该如何解决? 截断意味着数字被“截断”。例如,如果您有 0.1234567,并且该数字在第 4 位之后被截断,则它变为 0.1234,而不必将数字四舍五入,而自行四舍五入意味着它变为 0.123457,或者如果您四舍五入到最接近的整数,则简单地为 0。 【参考方案1】:

我不能 100% 确定,但我的猜测是,您看到的是由于 JavaScript 整数不是 64 位大小的事实。它们实际上更像53 bits。由于 Firebase 控制台是使用 JavaScript 实现的网络应用程序,它可能无法理解您向其写入的全部 64 位非常大的整数。

我建议使用另一个 python 程序从文档中读取值,而不是检查控制台中的值。如果它们与您写的相同,那么这里就没有真正的问题。您只是不能相信控制台中值的呈现。

【讨论】:

就是这样,当我用 Python 程序获取它们时,它们返回正确。 不幸的是,这不是纯粹的可读性。我们有一个云函数,它将新的 firestore 数据附加到带有 onWrite 触发器的谷歌电子表格中,并且文档中的 long 值以 53 位表示形式写入。 这似乎是 Javascript Firestore API 中无法接受的过度简化......它可以引入自定义整数类型,就像它对 Timestamp 所做的那样,可能有一个可配置的选项来启用它,无论如何。数据库 API 丢失数据是不可接受的。 @cubuspl42 您可以随时提交功能请求。 support.google.com/firebase/contact/support

以上是关于python 中[0-9]为啥代表一位数字的主要内容,如果未能解决你的问题,请参考以下文章

WLAN MAC地址的那些字母数字代表啥呢??

小数末尾的零能去掉吗?为啥?

Python正则及geometer正则截图讲解

python3--正则表达式

* ? a-z0-9通配符 学习

Java正则总结