查找字符串是否为路径

2024-05-16 02:08:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用python工作。我的问题是我有几个字符串,我必须检测它们的哪一部分看起来像一条路径,然后规范化那些实际路径。
例如,我有几个不同的字符串,如下所示:
1。。\…\..\工作区
2。C: \源\工作区
3。-B、 .\..\来源
4。-生成..\..\work\source..\workspace
5。-高清:\abc\bds\Workspace
基本上,有些字符串是直接的路径,有些字符串还附加了一个后缀-。选项字符串的长度是可变的。
在上面的示例中,字符串3、4、5分别包含一个预先附加了选项-B、-build、-H的路径字符串。
问题在于如何从上述示例中检测字符串的哪一部分是路径,而哪部分不是路径。选项不是固定的,所以我不能只检查给定字符串的头部是否有预先指定的选项。
前进的唯一方法是从..开始获取子字符串。。或前面的一个字符:(例如C:或D:)。

所以问题是,有没有任何通用的方法可以做到这一点,或者python是否提供任何函数来从任何特定位置获取字符串的截断部分?

任何满足以上5个例子的答案都是很酷的,即使它有点过分。在

我当前用于例如2和5的代码是:path = path[path.find(':')-1:] 其他人则是path = path[path.find('.'):]。但这并不是泛化和不酷的。所以我在寻找更好的算法或解决方案。在


Tags: path方法字符串路径示例source选项来源
3条回答

好吧,我想你需要的工具是列表切片机制

我们初始化一个字符串:

string = "a/b/c/d"

例如,如果我们想首先访问两个元素,那么我们可以:

^{2}$

如果我们想访问最后一个两个元素,那么我们将使用:

sub_string = string[-2:]

关于列表切片的更多信息http://www.pythoncentral.io/how-to-slice-listsarrays-and-tuples-in-python/

希望有帮助:)

如果你没有已知的选项列表,我不认为你可以有100%可靠的算法。在

如果我们进行一些合理的猜测,我可以这样想:

  • 如果它不是以-,那么它是一个路径
  • 如果它以-开头,则删除第一个字母并使用os.path.exists在余数上,如果它返回真,那么就有了路径
  • 重复以上步骤,直到你得到非字母数字字符

在某些情况下,这种情况会出现故障:

  • 我们确实有一个路径,但它不存在于文件系统中
  • 我们可能会吃掉驱动器号,然后检查路径是否存在于错误的驱动器上
  • if选项可以包含非字母数字字符
  • 参数是当前目录中的文件或文件夹

使用我创建的函数:

import os

string_1 = 'adsflk;ajewqpfoiewjqfpowijapfeiojC:\Python27'

def parse_path(string):
    count = 0
    while True:
        count += 1
        new_string = string.split(string[:count], 1)
        if os.path.exists(new_string[1]):
            return new_string
            break

{{{cd2>返回函数。只要把这些字符串中的任何一个发送给函数就可以了。祝你好运!在评论中提出问题。在

相关问题 更多 >