如何使用 python 删除数字之间的空格?
How to remove spaces between numbers using 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"
注意:小数点前加了一个零,去掉了一个。
这些我都试过了,
Regex to remove spaces between numbers only
提前谢谢你。
但这些不适用于以空格分隔的单个数字。
您不仅需要删除数字之间的 spaces,还需要删除 .
(点)和 /
(斜线),这可以按如下方式完成
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
表示任何白色space(即不仅space,而且例如\t
),您可以选择将其更改为
如果你确定你只会遇到spaces。 (?<=
...)
和 (?=
...)
是正后向断言和正先行断言,这些是零长度断言,用于确保仅匹配在 digit/dot 之后和 digit/dot 之前的 spaces, 没有 匹配表示 digits/dots。 .
在 [
和 ]
中使用时是文字 .
因此不需要转义。
要在 .
之前添加前导零,后跟数字,您可以再次使用 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
放在白色space(\s
)和文字点(\.
)之间,后跟一位或多位(+
)数字(\d
)。观察 .
在 [
和 ]
.
之外使用时需要转义
有关已用功能的进一步讨论,请阅读 re
docs
我想使用 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"
注意:小数点前加了一个零,去掉了一个。
这些我都试过了,
Regex to remove spaces between numbers only
提前谢谢你。 但这些不适用于以空格分隔的单个数字。
您不仅需要删除数字之间的 spaces,还需要删除 .
(点)和 /
(斜线),这可以按如下方式完成
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
表示任何白色space(即不仅space,而且例如\t
),您可以选择将其更改为
如果你确定你只会遇到spaces。 (?<=
...)
和 (?=
...)
是正后向断言和正先行断言,这些是零长度断言,用于确保仅匹配在 digit/dot 之后和 digit/dot 之前的 spaces, 没有 匹配表示 digits/dots。 .
在 [
和 ]
中使用时是文字 .
因此不需要转义。
要在 .
之前添加前导零,后跟数字,您可以再次使用 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
放在白色space(\s
)和文字点(\.
)之间,后跟一位或多位(+
)数字(\d
)。观察 .
在 [
和 ]
.
有关已用功能的进一步讨论,请阅读 re
docs