Python 中的 maketrans 和 replace 有什么区别?
What is difference between maketrans and replace in Python?
如果之前有人问过这个问题,我们深表歉意。我正在尝试从字符串中删除标点符号。我知道怎么做,但我不明白 Python 中 maketrans 和 replace 之间的区别。更具体地说,为什么下面的代码场景 1 会删除传入字符串中的所有标点符号,而场景 2 却没有?
场景 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))
.replace()
执行 substring 替换 - 它尝试将整个第一个参数匹配为一个块,并将其替换为整个第二个参数。
.maketrans
+ .translate
进行 字符级 翻译 - 它用第二个参数中的相应字符替换第一个参数中的每个单独字符。
如果之前有人问过这个问题,我们深表歉意。我正在尝试从字符串中删除标点符号。我知道怎么做,但我不明白 Python 中 maketrans 和 replace 之间的区别。更具体地说,为什么下面的代码场景 1 会删除传入字符串中的所有标点符号,而场景 2 却没有?
场景 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))
.replace()
执行 substring 替换 - 它尝试将整个第一个参数匹配为一个块,并将其替换为整个第二个参数。
.maketrans
+ .translate
进行 字符级 翻译 - 它用第二个参数中的相应字符替换第一个参数中的每个单独字符。