You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何替换字符串中文件扩展名前的文本?(Python实现)

解决方案

你的问题核心在于lstrip()的用法不对——它接收的是字符集合,不是完整的字符串/元组,会把文件名里匹配到的单个字符逐个移除,根本达不到你想要的“去掉扩展名前名称”的效果。replace()也不靠谱,因为没法保证只替换前缀部分。

给你两种靠谱的实现方式:

方法一:用os.path.splitext(推荐)

Python的os.path模块自带了分割文件名和扩展名的工具,省心又不会出错:

import os

def main():
    valid_extensions = (".gif", ".jpeg", ".jpg", ".png", ".pdf", ".txt", ".zip")
    file_input = input("What file would you like to run? \n>> ")
    _, ext = os.path.splitext(file_input)  # 下划线用来接收不需要的文件名部分
    if ext in valid_extensions:
        # 如果要输出格式是 `image/.zip` 就用下面这行
        print(f"image/{ext}")
        # 如果要输出格式是 `image/zip`(去掉扩展名的点),就换成这行:
        # print(f"image/{ext.lstrip('.')}")
    else:
        print("Unsupported file extension")

main()

方法二:手动分割(不依赖模块)

如果不想导入模块,可以通过查找最后一个.的位置来分割文件名和扩展名:

def main():
    valid_extensions = (".gif", ".jpeg", ".jpg", ".png", ".pdf", ".txt", ".zip")
    file_input = input("What file would you like to run? \n>> ")
    dot_pos = file_input.rfind('.')
    if dot_pos != -1:
        ext = file_input[dot_pos:]
        if ext in valid_extensions:
            print(f"image/{ext}")
            # 同样,要去掉点的话用:print(f"image/{ext[1:]}")
        else:
            print("Unsupported file extension")
    else:
        print("No valid file extension found")

main()

两种方法都能准确识别扩展名,然后替换前缀为image/,完全不会破坏扩展名的结构。

内容的提问来源于stack exchange,提问作者Cinder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 10:25:15