【问题标题】:Translate function in Python 3 [duplicate]Python 3中的翻译功能[重复]
【发布时间】: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

标签: python function translate


【解决方案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'))
    

    【讨论】:

      猜你喜欢
      • 2019-06-21
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      相关资源
      最近更新 更多