翻译()在python错误中只接受一个参数(给定2个)

新手上路,请多包涵
import os
import re

def rename_files():
    # get the files from dir
    file_list=os.listdir(r"C:\OOP\prank")
    print(file_list)
    saved_path=os.getcwd()
    print("current working directory"+saved_path)
    os.chdir(r"C:\OOP\prank")
    #rename the files
    for file_name in file_list:
        print("old name-"+file_name)
        #print("new name-"+file_name.strip("0123456789"))
        os.rename(file_name,file_name.translate(None,"0123456789"))
        os.chdir(saved_path)

rename_files()

这里由于翻译行而显示错误…帮助我下一步做什么..我正在使用翻译从文件名中删除数字。

 Traceback (most recent call last):
    File "C:\Users\vikash\AppData\Local\Programs\Python\Python35-  32\pythonprogram\secretName.py", line 17, in <module>
rename_files()
      File "C:\Users\vikash\AppData\Local\Programs\Python\Python35-  32\pythonprogram\secretName.py", line 15, in rename_files
     os.rename(file_name,file_name.translate(None,"0123456789"))
     TypeError: translate() takes exactly one argument (2 given)

原文由 vikash 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 363
1 个回答

str.translate 需要 dict 将unicode序数映射到其他unicode序数(或者 None 如果你想删除–字符)。您可以像这样创建它:

 old_string = "file52.txt"
to_remove = "0123456789"
table = {ord(char): None for char in to_remove}
new_string = old_string.translate(table)
assert new_string == "file.txt"

但是,通过使用 str.maketrans 函数,有更简单的制作表格的方法。它可以采用多种参数,但您需要三个参数形式。我们忽略前两个参数,因为它们用于将字符映射到其他字符。第三个参数是你想删除的字符。

 old_string = "file52.txt"
to_remove = "0123456789"
table = str.maketrans("", "", to_remove)
new_string = old_string.translate(table)
assert new_string == "file.txt"

原文由 Dunes 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题