Python 中的预处理数字

Preprocessing numbers in Python

在预处理数据时,我会得到不同格式的相同数值特征。 例如:

1x4 wire       1 x 4 wire
1-1/2x1 wire   1-1/2 x 1 wire
11/2x1 wire    1-1/2 x 1 wire 

我需要将不同的格式标准化为一种格式。

我们想到的一种方法是删除 x、-、/ 和 space 并合并所有内容。 即:

1x4 wire       1 x 4 wire         14 wire
1-1/2x1 wire   1-1/2 x 1 wire     1121 wire
11/2x1 wire    1-1/2 x 1 wire     1121 wire

谁能告诉我如何在 Python 中实现上述方法?

我尝试了以下代码来匹配所需的模式:

import re
regex = re.compile('(\d+.*?)\s?')

我不知道如何使用它的输出到 re.sub

这里有 2 种使用 re.sub 删除任何字符 x、- 或 / 的方法,空格位于数字字符之前和之后:

import re

myText = """
            1-1/2x1 wire cross box
            1x4 wire       1 x 4 wire         14 wire
            1-1/2x1 wire   1-1/2 x 1 wire     1121 wire
            11/2x1 wire    1-1/2 x 1 wire     1121 wire
        """

# First way
myNewText1 =  re.sub(r'(?<=([0-9])) *[x\-\/] *(?=([0-9]))', '', myText)
print(myNewText1)

# Second way (by defining first a regex pattern)
myPattern = re.compile(r'(?<=([0-9])) *[x\-\/] *(?=([0-9]))')
myNewText2 =  myPattern.sub('', myText)
print(myNewText2)

两者都打印出以下结果:

1121 wire cross box
14 wire       14 wire         14 wire
1121 wire   1121 wire     1121 wire
1121 wire    1121 wire     1121 wire