Можно сначала найти максимальное значение, а затем случайным образом выбрать среди кортежей, содержащих этот максимум:
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')
В одном случае, используя регулярные выражения :
>>> 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]
будет соответствовать всему, что не буквенно-цифровое или подчеркивание
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()
.
Иногда требуется больше времени, чтобы вычислить регулярное выражение, чем просто записать его в 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)