首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在字符之前获取所有内容,在字符之后获取x数量?

如何在字符之前获取所有内容,在字符之后获取x数量?
EN

Stack Overflow用户
提问于 2018-07-14 04:20:13
回答 1查看 80关注 0票数 1

它一直在尝试和错误,似乎不能得到我想要的。

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

folder\filename.whatever,即test\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)

谢谢你的帮助!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-14 06:03:30

就我对你的问题的理解,你想检索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:])

输出

/主目录/用户/python/test\pu

purpleMonkeyTest.docx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51332316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档