Найдите и замените буквенно-цифровые символы c пустой строкой в ​​python - PullRequest
0 голосов
/ 27 мая 2020

Приношу свои извинения, если этот пост дублируется. Я попытался использовать import re от python до search/replace слово. В приведенном ниже примере я хочу найти только aaa1 и заменить его на empty string.

# Input case 1
str = 'aaa,aaa1,aaa1.1'

# Input case 2
str = 'aaa,aaa1'

# Expected output for the case 1
'aaa,aaa1.1'

# Expected output for the case 2
'aaa'

Я пробовал границу слова \b, честно говоря, я смущен тем, что это такое + как используйте его правильно (https://www.regular-expressions.info/wordboundaries.html).

re.sub(r'\baaa1\b', '', str)

Результат будет aaa,,.1, как некоторые из вас уже ожидали. Я также пробовал с /^aaa1$/, но безуспешно. Я новичок в python и его модуле, таком как re. Буду признателен за ваш совет о том, как выполнить ^ objective.

[update]

Я обновил свой исходный вопрос, добавив входные данные и ожидаемые результаты, чтобы прояснить мою цель.

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Это сделает это:

def f(str):
    s = str.split(',')
    if 'aaa1' in s:
        for n in s:
            if n == 'aaa1': s.remove(n)
        return(','.join(s))
    else:
        for n in s:
            if 'aaa1' in n: s.remove(n)
        return(','.join(s))

print(f('aaa,aaa1,aaa1.1'))
print(f('aaa,aaa1.1'))

Вывод:

aaa,aaa1.1
aaa
0 голосов
/ 27 мая 2020

Вот go:

def filter_str(s):
    s = re.sub(r'\baaa1,', '', s)
    return re.sub(r',aaa1$', '', s)
...