在预处理数据时,我将获得具有不同格式的相同数字特征。 例如:
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
我需要将不同格式标准化为单一格式。
我们认为一个approch是删除x, - ,/和空格并组合所有内容。 即:
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
。
答案 0 :(得分:1)
以下两种方法可以使用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