translate()在python中只接受一个参数(给定2个)

2024-09-28 20:49:05 发布

您现在位置:Python中文网/ 问答频道 /正文

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)

Tags: thepathnameinimportosfilestranslate
3条回答

Python中的更高版本使用:

eg: oldname= "delhi123"    
remove="1234567890"    
table=str.maketrans("","",remove)    
oldname.translate(table)    

查询的总体解决方案:

import os    

def rename_file_names():    
    file_list=os.listdir(r"C:\Users\welcome\Downloads\Compressed\prank")    
    print (file_list)    
    saved_path=os.getcwd()    
    print("current working direcorty is"+saved_path)    
    os.chdir(r"C:\Users\welcome\Downloads\Compressed\prank")    
    remove="123456789"    
    table=str.maketrans("","",remove)    
    for file_name in file_list:    
        os.rename(file_name,file_name.translate(table))    


rename_file_names()    

更改os.rename(file_name,file_name.translate(None,"0123456789"))os.rename(file_name,file_name.translate(str.maketrans('','',"0123456789"))) 它会起作用的。

str.translate需要一个dict来将unicode序号映射到其他unicode oridinals(或者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"

相关问题 更多 >