【问题标题】:Why is str.translate() returning an error and how can I fix it?为什么 str.translate() 返回错误,我该如何解决?
【发布时间】:2017-01-17 14:02:06
【问题描述】:
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() 不返回错误?

【问题讨论】:

  • 您有问题吗?
  • 您的问题应该在str.translate 上。 Example,还有很多关于重命名文件的问题。
  • 你能发布一些原始字符串的例子 -> 翻译吗?我不明白你想用translate做什么
  • 我要删除文件名中的数字。

标签: python-3.x


【解决方案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 2.x 那样 translate() 语法是

str.translate(table[, deletechars])

可以接受多个参数。

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

我们也可以使用字典手动制作翻译表,其中key包含before的ASCII,value包含after字符的ASCII。如果我们想删除一些字符它的值必须为无。 IE。如果我们想用 'a' 替换 'A' 并删除字符串中的 '1' 那么我们的字典看起来像这样

{65: 97, 49: 无}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-26
    • 2020-03-30
    • 1970-01-01
    • 2021-12-24
    • 2016-11-18
    相关资源
    最近更新 更多