2024-07-04 05:10:47 发布
网友
假设我有一个字符串/Apath1/Bpath2/Cpath3/0-1-2-3-4-5-something.otherthing,我只想提取'0-1-2-3-4-5'部分。我试过这个:
/Apath1/Bpath2/Cpath3/0-1-2-3-4-5-something.otherthing
str='/Apath1/Bpath2/Cpath3/0-1-2-3-4-5-something.otherhing' print str[str.find("-")-1:str.find("-")]
但是,结果只有0。如何仅提取“0-1-2-3-4-5”部分?你知道吗
使用操作系统路径基名称和拆分:
>>> from os.path import basename >>> name = '/Apath1/Bpath2/Cpath3/0-1-2-3-4-5-something.otherhing' >>> number, tail = basename(name).rsplit('-', 1) >>> number '0-1-2-3-4-5'
你就快到了:
str='/Apath1/Bpath2/Cpath3/0-1-2-3-4-5-something.otherhing' print str[str.find("-")-1:str.rfind("-")]
rfind将从末尾搜索。这假设路径中其他任何位置都不会出现破折号。如果可以,请改为:
rfind
str='/Apath1/Bpath2/Cpath3/0-1-2-3-4-5-something.otherhing' str = os.path.basename(str) print str[str.find("-")-1:str.rfind("-")]
basename将获取文件名,不包括路径的其余部分。那可能就是你想要的。你知道吗
basename
编辑:
正如@布拉德利.艾尔斯,如果问题中没有确切描述文件名,则会出现这种情况。因为我们使用的是basename,所以可以省略起始索引:
print str[:str.rfind("-")]
这将解析“/Apath1/Bpath2/Cpath3/10-1-2-3-4-5”-什么。其他的“如”10-1-2-3-4-5“。你知道吗
这样做有效:
>>> str='/Apath1/Bpath2/Cpath3/0-1-2-3-4-5-something.otherhing' >>> str.split('/')[-1].rsplit('-', 1)[0] '0-1-2-3-4-5'
假设你想要的只是最后一个“/”和最后一个“-”之间的东西。使用os.path的其他建议可能更有意义(只要操作系统不混淆正确的路径是什么样子)
os.path
使用操作系统路径基名称和拆分:
你就快到了:
rfind
将从末尾搜索。这假设路径中其他任何位置都不会出现破折号。如果可以,请改为:basename
将获取文件名,不包括路径的其余部分。那可能就是你想要的。你知道吗编辑:
正如@布拉德利.艾尔斯,如果问题中没有确切描述文件名,则会出现这种情况。因为我们使用的是
basename
,所以可以省略起始索引:这将解析“/Apath1/Bpath2/Cpath3/10-1-2-3-4-5”-什么。其他的“如”10-1-2-3-4-5“。你知道吗
这样做有效:
假设你想要的只是最后一个“/”和最后一个“-”之间的东西。使用
os.path
的其他建议可能更有意义(只要操作系统不混淆正确的路径是什么样子)相关问题 更多 >
编程相关推荐