Как удалить символы из строки с Python? [дубликат]

Можно сначала найти максимальное значение, а затем случайным образом выбрать среди кортежей, содержащих этот максимум:

import random

key_list=[(2, 'just', 'sd'), (2, 'great', 'sd'), (1, 'just great', 'sd')]

maxi = max(t[0] for t in key_list)
out = random.choice([t for t in key_list if t[0]==maxi])

print(out)
# (2, 'just', 'sd')
67
задан aaront 18 May 2009 в 01:55
поделиться

3 ответа

В одном случае, используя регулярные выражения :

>>> s = "how much for the maple syrup? $20.99? That's ridiculous!!!"
>>> re.sub(r'[^\w]', ' ', s)
'how much for the maple syrup   20 99  That s ridiculous   '
  • \ w будет соответствовать буквенно-цифровым символам и знакам подчеркивания

  • [^ \ w] будет соответствовать всему, что не буквенно-цифровое или подчеркивание

122
ответ дан 24 November 2019 в 14:32
поделиться

I often just open the console and look for the solution in the objects methods. Quite often it's already there:

>>> a = "hello ' s"
>>> dir(a)
[ (....) 'partition', 'replace' (....)]
>>> a.replace("'", " ")
'hello   s'

Short answer: Use string.replace().

8
ответ дан 24 November 2019 в 14:32
поделиться

Иногда требуется больше времени, чтобы вычислить регулярное выражение, чем просто записать его в python:

import string
s = "how much for the maple syrup? $20.99? That's ricidulous!!!"
for char in string.punctuation:
    s = s.replace(char, ' ')

Если вам нужны другие символы, вы можете изменить его, чтобы использовать белый список или расширить свой черный -list.

Пример белого списка:

whitelist = string.letters + string.digits + ' '
new_s = ''
for char in s:
    if char in whitelist:
        new_s += char
    else:
        new_s += ' '

Пример белого списка с использованием выражения-генератора:

whitelist = string.letters + string.digits + ' '
new_s = ''.join(c for c in s if c in whitelist)
26
ответ дан 24 November 2019 в 14:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: