python - Python:从字符串中提取带点和逗号的数字
问题描述
我正在用 Python 解析一个包含单词和数字的文件。我只对数字感兴趣,即只有字符 0 到 9、点 (.) 和逗号 (,)。我对保留点和逗号很感兴趣,因为有些文件是用美式数字编写的,即 3.14159,而另一些文件是欧洲(德国)风格,即 3,14159。
我想要一个简单的解决方案,即没有任何 for 循环,没有生成器、产量或复杂的函数。使用正则表达式 (re) 库是完全可以的,但如果你能解释 re.func() 是做什么的,这样我们就可以了解如何在以后需要时以不同的方式调用它。
我的输入是一串混合的数字和字符。两个连续的数字总是由一个或多个小数字符以外的字符分隔。所需的输出应该是一个字符串列表,即每个提取的数字对应一个字符串。以下是一个示例,其中有三个数字要分开,即 3.14、3,14 和 85.2
示例输入:
This Is3.14ATes t3,14 85.2
期望的输出:
['3.14', '3,14', '85.2']
如果这里已经有其他帖子解决了完全相同的问题,我深表歉意。虽然我在这里搜索了很多类似的问题,但我能找到的最接近的是: Regular expression numbers with dots and commas,但是,由于输入的格式和所需的输出,它并没有真正解决我的问题。在此先感谢您的帮助。
解决方案
您可以使用如下的正则表达式:
input_string = 'This Is3.14ATes t3,14 85.2'
match = re.findall("([0-9]+[,.]+[0-9]+)", input_string)
这将找到以下格式的任何内容:
(number)(, or .)(number)
推荐阅读
- python - 如何获取嵌套字典列表中所有键的路径
- angular - 使用代理配置托管 Angular 应用程序
- google-app-engine - 在 Google Cloud Platform 上训练和部署我的 ML 模型
- php - 将 CSV 数据组合到 php 数组中,并带有一些无关的结果
- android - 无法将第二个应用添加到 Crashlytics
- c - 如何防止鼠标图标被更改?
- linux - 将浮动 IP 转发到内部端口
- python - 鼻子测试的类设置失败处理程序
- excel - 带有条件的表的每一列中的 COUNT 个非空单元格
- mysql - MySQL SELECT 查询有时会获取陈旧数据