2015-02-02 3 views
1

Извините, если это было задано раньше. Я пытаюсь удалить пунктуацию из строки. Я знаю, как это сделать, но я не понимаю разницы между maketrans и заменой в Python. Более конкретно, почему сценарий сценария 1 ниже удаляет всю пунктуацию из входящих строк, но сценарий 2 не работает?В чем разница между maketrans и заменой в Python?

СЦЕНАРИЙ 1

def average(x): 
    table = x.maketrans('.,?!:','$$$$$') 
    x = x.translate(table) 
    x = x.replace('$', '') 
    lst1 = x.split() 
    lst2 = [] 
    for i in lst1: 
     length = len(i) 
     lst2.append(len(i)) 
    average = sum(lst2)/len(lst2) 

    return average 

str1 = input("Enter a sentence:") 

print('The average amount of chars in that sentence is: ', average(str1)) 

СЦЕНАРИЙ 2

def average(x): 
    x = x.replace('.,?!:','') 
    lst1 = x.split() 
    lst2 = [] 
    for i in lst1: 
     length = len(i) 
     lst2.append(len(i)) 
    average = sum(lst2)/len(lst2) 

    return average 

str1 = input("Enter a sentence:") 

print('The average amount of chars in that sentence is: ', average(str1)) 

ответ

2

.replace() делает подстрока заменить - он пытается сопоставить полноту первого аргумента, как один кусок, и заменить его полностью второго аргумента.

.maketrans + .translate делает символьного уровня перевода - он заменяет каждый отдельный символ из первого аргумента с соответствующим символом во втором.

+0

Спасибо! Теперь я понимаю. –

Смежные вопросы