Предварительная обработка чисел в Python - PullRequest
0 голосов
/ 31 мая 2018

При предварительной обработке данных я получу одинаковые числовые функции в разных форматах.Например:

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, -, / и пробел и объединить все.то есть:

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?')

Iя не понимаю, как использовать его вывод для re.sub.

1 Ответ

0 голосов
/ 31 мая 2018

Вот 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
...