如何从另一个字符串中提取字符串而不更改字符大小写

时间:2014-02-14 04:14:08

标签: python split lowercase

有两个变量。

为变量驱动器分配了一个驱动器路径(字符串)。 变量 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  )

2 个答案:

答案 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'