如何获得字符前的所有内容以及字符后的x数量?

时间:2018-07-13 20:20:13

标签: python split

这是反复试验的,似乎无法得到我想要的。

我正在访问API以获取一些信息。不幸的是,它是获取和执行该信息的唯一API,它下载文件的二进制内容并命名:

folder\filename.whatevertest\purpleMonkeyTest.docx

有很多信息来自通话,但有这行:

Saved the binary content to: /home/user/python/test\purpleMonkeyTest.docx

有些文件带有"或其他特殊字符,所以我不能只获取文件名并将其作为脚本的一部分删除,因为我不知道要转义什么。

所以我的目标是剥线并获得:

/home/user/python/test\purpleMonkeyTest.docx

然后只得到:

/home/user/python/test\pu

然后:

os.remove "/home/user/python/test\pu"*

我认为通配符应该适用于所有人,除非有更好的方法可以使用通配符。保存的所有文件中都包含字符\,所以我要说的是要在\之前获取所有内容,但在此之后我也要一个或两个字符。

这是我尝试过的:

def fileName(itemID):
    import fnmatch
    details = itemDetails(itemID, True) # get item id and file details
    filepath = matchPattern((details), 'Saved the binary content to: *')
    filepath = (filepath).split('\\')[0]
    print(filepath)
    #os.remove(re.escape(filepath))
    return (matchPattern((details), 'Binary component: *'))


def matchPattern(details, pattern):
    import fnmatch
    return (fnmatch.filter((details), pattern)[0].split(": " ,1)[1])

输出:

/home/user/python/test
purpleMonkeyTest.docx

我确实想要以后使用的文件名:这实际上是主要目标。该API会自动下载该死的文件。

编辑:

以下答案可用于获取我想要的字符。 Os remove不会删除文件。

OSError: [Errno 2] No such file or directory: '/home/user/python/test\\Re*'

设法使用glob使其正常工作,我想os.remove不支持Wilds。

    files = glob.glob((filepath)+"*")
    for file in files:
     os.remove(file)

感谢您的帮助!!

1 个答案:

答案 0 :(得分:1)

据我所知,您想检索2部分-首先是/\之间的所有内容,其后是2个字符,然后是\之后的所有内容:

str = "Saved the binary content to: /home/user/python/test\purpleMonkeyTest.docx"

print (str[str.index("/"):str.rindex("\\") + 3])
print (str[str.rindex("\\") + 1:])

输出

  

/ home / user / python / test \ pu

     

purpleMonkeyTest.docx