【问题标题】:How to remove all characters before the final \ [duplicate]如何删除最后 \ 之前的所有字符 [重复]
【发布时间】:2017-04-12 04:08:08
【问题描述】:

我有一个名为dllName 的变量,它获取已执行的dll 的名称。有时此 dll 以"kernel32.dll" 的格式返回,有时以"C:\Windows\system32\kernel32.dll" 的格式返回。

路径可能不同,我想要实现的是剥离"C:\Windows\system32\"

编辑:Extract file name from path, no matter what the os/path format

我的问题和这个问题不一样,因为 os.path.basename 和 os.path.split 在这种情况下不起作用。

对于 os.path.split,头部为空,尾部包含整个路径?

【问题讨论】:

  • 不需要正则表达式,只需使用os.path.basename
  • 您能告诉我们您尝试过哪些不起作用或遇到困难的方法吗?如果您自己还没有尝试过任何代码,您可以使用 stackoverflow 上的搜索功能吗?
  • @Rawing: os.path.basename 不适用于 Linux 上的 Windows 路径。

标签: python python-2.7 split


【解决方案1】:

你可以使用:

path = 'C:\\Windows\\system32\\kernel32.dll'
print path.split('\\')[-1]
#=>  kernel32.dll

import os.path
print os.path.basename(path)

import re

def extract_basename(path):
  """Extracts basename of a given path. Should Work with any OS Path on any OS"""
  basename = re.search(r'[^\\/]+(?=[\\/]?$)', path)
  if basename:
    return basename.group(0)

print extract_basename(path)

最后一个示例应该适用于任何操作系统、任何路径。

Here 是一些测试。

【讨论】:

  • 选项 1 有效,选项 2 无效。感谢您的帮助!
  • 选项 2 不适用于 Linux 上的 Windows 路径。选项 3 应该适用于任何操作系统上的任何路径。
猜你喜欢
  • 1970-01-01
  • 2021-11-29
  • 2012-03-08
  • 1970-01-01
  • 1970-01-01
  • 2016-08-09
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多