有两个变量。
为变量驱动器分配了一个驱动器路径(字符串)。 变量 filepath 被分配了一个完整的文件路径(字符串)。
drive = '/VOLUMES/TranSFER'
filepath = '/Volumes/transfer/Some Documents/The Doc.txt'
首先,我需要查找存储在驱动器变量中的字符串是否存储在 filepath 变量中的字符串中。 如果是,那么我需要从存储在 filepath 变量中的字符串中提取存储在驱动变量中的字符串,而不更改两个变量字符大小写(不更改为小写或大写。字符大小写应保持不变。)
所以最后的结果应该是:
result = '/Some Documents/The Doc.txt'
我可以完成它:
if drive.lower() in filepath.lower(): result = filepath.lower().split( drive.lower() )
但是像这样的方法搞砸了字母大小写(现在一切都是小写的) 请提前告知,谢谢!
我可以使用自己的方法。它似乎是陈述的IF部分
if drive.lower() in filepath.lower():
区分大小写。如果大小写不匹配,驱动器在文件路径将返回False。 所以降低() - 比较时的所有内容都是有意义的。但无论字母大小写如何,.split()方法都会分割得很漂亮:
if drive.lower() in filepath.lower(): result = filepath.split( drive )
答案 0 :(得分:5)
if filepath.lower().startswith(drive.lower() + '/'):
result = filepath[len(drive)+1:]
答案 1 :(得分:1)
使用str.find
:
>>> drive = '/VOLUMES/TranSFER'
>>> filepath = '/Volumes/transfer/Some Documents/The Doc.txt'
>>> i = filepath.lower().find(drive.lower())
>>> if i >= 0:
... result = filepath[:i] + filepath[i+len(drive):]
...
>>> result
'/Some Documents/The Doc.txt'