【问题标题】:Python strip unexpected behaviorPython 剥离意外行为
【发布时间】:2016-03-09 23:16:12
【问题描述】:

为了路由目的,我在 python 中剥离了一个文件名,但我在使用 python strip 函数时遇到了一些意外行为。我已阅读文档并在线搜索,但无法找到以下行为的解释:

"Getting-Started.md".strip('.md')
 Out[29]: 'Getting-Starte'

但如果是句号左侧除了“d”之外的任何其他字符,它可以正常工作:

"Getting-StarteX.md".strip('.md')
 Out[30]: 'Getting-StarteX'

似乎有一些类似于正在发生的镜像的事情。 MD'。我现在正在做一个双条来解决这个问题,但我只是好奇为什么会发生这种情况。

谢谢。

【问题讨论】:

    标签: python


    【解决方案1】:

    strip() 将删除参数中提供的所有字符 - 在您的情况下为 .md

    相反,您可以使用os.path.splitext():

    import os
    os.path.splitext("Getting-StarteX.md")[0]
    

    【讨论】:

    • 最后一个是首选。
    • @Daniel 同意,删除了其他选项以避免混淆。谢谢。
    【解决方案2】:

    如果测试字符串的末尾只有一个“.md”,也可以使用

    "Getting-Started.md".split('.md')[0]
    

    感谢@Carpetsmoker 提醒我这个假设。

    【讨论】:

    • .split('.md')?你确定吗?另外,如果我的文件名为this.is.a.markdown.file.md怎么办?
    • @Carpetsmoker,你是对的。必须假设测试字符串的末尾只有一个“.md”。
    • 为什么不'.'.join("Get.ting-Sta.rted.md".split('.')[:-1]) ;-)
    • 迟早会有人在文件名中使用.,这会让你感到困惑,因为它会说“找不到文件”,即使文件是就在那儿! ;-) 错误更不优雅!
    • 如果你想走这条路(IMO 你不应该),你应该使用.rsplit('.md', 1)[0]
    猜你喜欢
    • 2019-07-03
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 2014-03-27
    • 1970-01-01
    相关资源
    最近更新 更多