Python中maketrans和replace有什么区别?

3

如果这个问题之前问过了,我向你道歉。我正在尝试从字符串中删除标点符号。我知道如何做到这一点,但是我不理解Python中maketrans和replace之间的区别。更具体地说,为什么下面的第一种代码情况会从传入的字符串中删除所有标点符号,而第二种情况则不会呢?

代码情况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))
1个回答

4

.replace()执行子字符串替换 - 它试图将第一个参数的整个部分作为一个块进行匹配,并用第二个参数的整体替换它。

.maketrans + .translate执行字符级别翻译 - 它用第二个参数中相应的字符替换第一个参数中的每个单独字符。


谢谢!我现在明白了。 - user4513674

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接