Регулярное выражение проверяет, есть ли в строке какие-либо числа, за которыми следуют единицы в python, и изменяет его - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь очистить некоторые данные, включая такие тексты, как «6 см * 8 см», «6 см x 8 см» и «6 * 8». Я хочу изменить их, чтобы они стали похожими. Обратите внимание, что числа можно изменять, поэтому в данных может быть «3 см * 4 см» и c.

# input strings
strings = [
    "6cm*8cm",
    "12mmx15mm",
    'Device stemmer 2mm*8mm',
    'Device stemming 2mmx8mm'
]
# My desired output would be:
desired_strings = [
    '6*8',
    '12*15',
    'Device stemmer 2*8',
    'Device stemming 2*8'
]

Я использую python 're'. Я предпочитаю преобразовывать их в простое «6 * 8» (т.е. число * число). Обратите внимание, что в некоторых записях данные содержат такие строки, как: 'Device stemmer 2mm * 8mm', и я не хочу менять другие слова.

Есть ли способ pythoni c с регулярным выражением для изменения всех возможные комбинации чисел и единиц в паре друг с другом?

1 Ответ

0 голосов
/ 03 августа 2020

Я использовал:

import re

strings = [
    "6cm*8cm",
    "12mmx15mm",
    'Device stemmer 2mm*8mm',
    'Device stemming 2mmx8mm'
]

for i in strings:
    result = re.sub(r"([0-9]+)(cm|mm)(\*|x)([0-9]+)(cm|mm)", r"\1*\4", i)
    print(result)

Примечания: ([0-9]+): соответствует числам, (cm|mm): соответствует единицам измерения, а | означает логический OR, (\*|x): соответствует \* или x как разделителю пар, \1: дает первую группу (здесь первое число, например, 6), \4: дает четвертую группу (здесь второе число, например, 8)

https://regex101.com/ и этот ответ помог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...