Python 3中的翻译功能[重复]

Posted

技术标签:

【中文标题】Python 3中的翻译功能[重复]【英文标题】:Translate function in Python 3 [duplicate] 【发布时间】:2017-06-02 04:52:15 【问题描述】:

我正在使用 Python 3,我想将我的文件名翻译为没有数字。翻译功能似乎在 Python 3 中不起作用。如何将文件名翻译为没有数字?

这是不起作用的代码块:

file_name = "123hello.jpg"
file_name.translate(None, "0123456789")

谢谢

【问题讨论】:

您确定可以定义file_name = 123hello.jpg 吗? O_o 【参考方案1】:

str.translate还在,只是界面变了一点:

>>> table = str.maketrans(dict.fromkeys('0123456789'))
>>> '123hello.jpg'.translate(table)
'hello.jpg'

【讨论】:

有点混乱,但它有效。谢谢你【参考方案2】:

.translate 获取翻译表:

返回字符串 S 的副本,其中每个字符都已 映射 通过给定的翻译表。该表必须实现 通过 getitem 查找/索引,例如字典或列表, 将 Unicode 序数映射到 Unicode 序数、字符串或无。如果 此操作引发 LookupError,字符保持不变。 映射到 None 的字符被删除。

所以你可以这样做:

>>> file_name = "123hello.jpg"
>>> file_name.translate(ord(c):'' for c in "1234567890")
'hello.jpg'
>>>

【讨论】:

【参考方案3】:

我正在使用 ver3.6.1 并且翻译不起作用。起作用的是 strip() 方法,如下所示:

file_name = 123hello.jpg

file_name.strip('123')

【讨论】:

这不包括从字符串中删除“1”、“2”或“3”,而是删除子字符串“123”。不完全是问什么,虽然它确实“修复”了示例代码。 @boatcoder strip 函数将“123”解释为要删除的字符集,因此它将从字符串中删除“1”、“2”或“3” @nonagon >>> "1 apple, 2 oranges, 3 pigs".strip("123") 产生 ' apple, 2 oranges, 3 pigs' 这不适用于一般情况。他想从整个文件名中删除数字,而不仅仅是在开始时。这解决了一个示例,但没有解决问题。 @boatcoder 啊哈抱歉我误解了你的评论 - 我同意!【参考方案4】:

只删除左边的数字

new_name = str.lstrip('1234567890')

只删除右边的数字

new_name = str.rstrip('1234567890')

从左右删除数字

new_name = str.strip('1234567890')

删除所有数字

new_name = str.translate(str.maketrans('', '', '1234567890'))

【讨论】:

以上是关于Python 3中的翻译功能[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java 或 Python 中的 \K 功能重复?

Python 中的幂运算符 (**) 翻译成啥?

在python中用字典翻译数据框[重复]

Python中的mkdir -p功能[重复]

Python中的mkdir -p功能[重复]

python中的函数