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
在预处理数据时,我会得到不同格式的相同数值特征。 例如:
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