python - 如何使用python删除数字之间的空格?
问题描述
我想使用 python 删除数字之间的空格。例如,
my_string = "take take , mouth ? 1 unit 1 2 3 1 mg 0 . 1 mg 1 . 1 mg 1 / 2 take . 5 unit and 00 . 5 unit"
我的预期输出是,
"take take , mouth ? 1 unit 1231 mg 0.1 mg 1.1 mg 1/2 take 0.5 unit and 0.5 unit"
注意:小数点前加了一个零,去掉了一个。
这些我都试过了
先感谢您。但这些不适用于以空格分隔的单个数字。
解决方案
您不仅需要删除数字之间的空格,还需要删除.
(点)和/
(斜线),这可以通过以下方式完成
import re
my_string = "take take , mouth ? 1 unit 1 2 3 1 mg 0 . 1 mg 1 . 1 mg 1 / 2 take . 5 unit and 00 . 5 unit"
no_spaces = re.sub(r'(?<=[0-9./])\s+(?=[0-9./])','',my_string)
print(no_spaces)
输出
take take , mouth ? 1 unit 1231 mg 0.1 mg 1.1 mg 1/2 take .5 unit and 00.5 unit
\s
表示任何空格(即不仅是空格,还包括例如),如果您确定只会遇到空格\t
,您可以选择将其更改为。...和...是肯定的后向和肯定的前瞻断言,这些是零长度断言,用于确保仅在数字/点之后和数字/点之前匹配空格,而不匹配所述数字/点。当在内部使用时,它是字面的,因此不需要转义。
(?<=
)
(?=
)
.
[
]
.
.
要在后跟数字之前添加前导零,您可以再次re.sub
使用零长度断言,如下所示
leading_zeros = re.sub(r'(?<=\s)(?=\.\d+)', '0', no_spaces)
print(leading_zeros)
输出
take take , mouth ? 1 unit 1231 mg 0.1 mg 1.1 mg 1/2 take 0.5 unit and 00.5 unit
说明:0
在空格 ( \s
) 和文字点 ( \.
) 之间放置一个或多个 ( +
) 数字 ( \d
)。注意.
在外面使用时需要转义[
和]
.
有关使用的功能的进一步讨论,请阅读re
文档
推荐阅读
- javascript - Nodejs事件循环?
- function - 从 Go 中的查找表创建对象中变量的函数
- apache-flink - 阅读命令 flink run -m yarn-cluster 的源代码
- python - 在路径问题上移动敌人 Pygame - 塔防游戏
- java - 尝试构建 Ping 功能,当单击按钮时,将向用户返回一个对话框,显示主机是否已启动
- azure - VSCode - 部署 Azure 应用 - 找不到任务错误
- ios - 在 SwiftUI 卡片视图中将 UIImage 裁剪到跨设备的特定区域
- angular - 如何在代码中创建角度模板引用
- laravel - Laravel Spatie 的媒体库:如何下载多个文件并将它们压缩到一个目录中
- html - 如何从 regex101 任务 8 中的字符串中去除所有 HTML 标签?