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”。不完全是问什么,虽然它确实“修复”了示例代码。 @boatcoderstrip
函数将“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中的翻译功能[重复]的主要内容,如果未能解决你的问题,请参考以下文章