为什么str.translate()返回错误,我该如何解决?

时间:2017-01-17 14:02:06

标签: python-3.x

import os

def rename_files():
    file_list = os.listdir(r"D:\360Downloads\test")
    saved_path = os.getcwd()
    os.chdir(r"D:\360Downloads\test")

    for file_name in file_list:
        os.rename(file_name, file_name.translate(None,"0123456789"))

rename_files()

错误消息为TypeError: translate() takes exactly one argument (2 given)。如何格式化以使translate()不返回错误?

1 个答案:

答案 0 :(得分:1)

希望这有帮助!

os.rename(file_name,file_name.translate(str.maketrans('','','0123456789')))

os.rename(file_name,file_name.translate({ ord(i) : None for i in '0123456789' }))

<强>解释

我认为你正在使用Python 3.x和Python 2.x的语法。在Python 3.x translate()语法是

  

str.translate(表)

只接受一个参数,而不像Python {x,其中translate()语法是

  

str.translate(table [,deletechars])

可能需要多个参数。

我们可以使用 maketrans 功能轻松制作翻译表。 在这种情况下,在前两个参数中,我们将 nothing 替换为 nothing ,在第三个参数中,我们指定要删除的字符。

我们也可以使用字典手动制作翻译表,其中键包含之前的的ASCII,并且字符后包含的ASCII。如果我们想要删除某些字符值必须是无。 即如果我们想用'a'替换'A'并在字符串中删除'1',那么我们的字典就像这样

  

{65:97,49:无}