Python 可变长度前缀字符串的操作

Python 可变长度前缀字符串的操作,python,char,Python,Char,对Python来说非常陌生,在这个站点上发现了大量优秀的Qs和As。谢谢大家。我的困境是: 我有一个位置树,可以递归地搜索和移动某些类型的数据(如果存在的话),并找到了很多可以利用的地方。我的问题是命名约定。名称有一种标准格式,其中前缀为3或4个字符(每个字符中的一些字符),名称为多个字符,后缀为四个字符。有些名称使用“uu”作为分隔符(PLAN_someFile_to_work_ZZTT,或FOR_someOtherFile_XXYY)(PLAN,FOR-are前缀…ZZTT,XXYY-are

对Python来说非常陌生,在这个站点上发现了大量优秀的Qs和As。谢谢大家。我的困境是:

我有一个位置树,可以递归地搜索和移动某些类型的数据(如果存在的话),并找到了很多可以利用的地方。我的问题是命名约定。名称有一种标准格式,其中前缀为3或4个字符(每个字符中的一些字符),名称为多个字符,后缀为四个字符。有些名称使用“uu”作为分隔符(PLAN_someFile_to_work_ZZTT,或FOR_someOtherFile_XXYY)(PLAN,FOR-are前缀…ZZTT,XXYY-are后缀)

这里有一个问题:我如何将它清晰地分为三个元素,或者将“Pythonicly”分为前缀、fName和后缀?fName的长度不同,如果有,则需要使用“u”。我已经能够操作并删除“u”,但是,当试图仅获取前缀时,会被前缀长度为3个字符或4个字符绊倒fName(带或不带“u”。)我被绊倒了,无法选择正确的字符数

哦,我可以很好地提取前缀,并在一个合法值元组中检查它的存在。有没有方法可以很容易地从该元组中选择前缀?我可以使用它,或者尝试从文件中解析它,作为一个选项

代码是测试代码。打印语句是为了开发人员的利益,不会出现在最终的代码中。一些测试是为了让我理解Py如何处理这些东西。谢谢

 for dirName, subdirList, fileList in os.walk(rootDir):
    print('Found directory: %s' % dirName)
    if dirName.lower().endswith('.xxx'):
        print('\n %s is a Database. ' % dirName)
        BADrop = ntpath.basename(dirName)
        print ('%s is variable BADrop. ' %BADrop)
        dropName = remove(BADrop, '_')
        print ('%s is variable dropName. ' %dropName)
        NST = BADrop.split('_') [0]
        NSP = BADrop.split('_') [-1]
        NSP = os.path.splitext(NSPrj) [0]
        NSt = os.path.splitext(BADrop) [1]
        abc = dropName[4:-8]
        if NST in pubTheme2: #pubTheme2 is a tuple list of legit values for the Prefix
            print ('%s is variable NST. ' %NST)
            print ('%s is variable NSP. ' %NSP)
            print ('%s is variable NSt. ' %NSt)
            print ('%s is variable abc. ' %abc)
像这样的东西对你有用吗


另外,如果您不希望下划线保留在“中间”部分,只需将
“25;”.join(z[1:-1])
更改为
”。join(z[1:-1])
。无论哪种方式都行。

这对我行吗?我问过之后才发现?如果行,我需要更多的外行来解释……谢谢,Breton01抱歉,maccartm。我尝试了这个,但没有成功。z从函数返回时为空。我还尝试了在第一个com中放置链接的帖子这篇文章让我更进一步了,但它最终在过程中删除了前缀。我需要将其作为变量保留,以帮助确定将文件移动到的目标路径,作为处理的一部分。添加
return z
,如果您希望它返回;我只是在示例中使用已编辑的代码打印它,对我来说效果很好,c我得到的两个输出是
['PLAN',someFile_to_work',ZZTT']
['FOR','someOtherFile',XXYY']
我昨天不在家,谢谢maccartm,你对我提供的内容是正确的,一旦我完成工作并有了更好的理解,我会发布我的解决方案。我发布的项目有“\uuu”因为这是可选的,所以我需要测试和分支。您提供的内容肯定是解决方案的核心部分,而不是完整的解决方案。
x = "PLAN_someFile_to_work_ZZTT"
y = "FOR_someOtherFile_XXYY"

def split(x):
    z = x.split("_")
    z[1] = "_".join(z[1:-1])
    del(z[2:-1])
    return z

print split(x)
print split(y)